2013-04-25 88 views
1

Ember 1.0.0 RC3附帶一個入門工具包,其中包含一個相當簡單的演示,用於在列表中顯示三種顏色。Ember數據的Ember入門工具包

模型數據直接插在IndexRoute這樣的:

App.IndexRoute = Ember.Route.extend({ 
    model: function() { 
    return ['red', 'yellow', 'blue']; 
    } 
}); 

我試圖改變這個簡單的演示使用燼數據(模型,商店,...)。但是,沒有成功。我演示的控制檯輸出爲:

DEBUG: ------------------------------- ember-1.0.0-rc.3.js:349 
DEBUG: Ember.VERSION : 1.0.0-rc.3 ember-1.0.0-rc.3.js:349 
DEBUG: Handlebars.VERSION : 1.0.0-rc.3 ember-1.0.0-rc.3.js:349 
DEBUG: jQuery.VERSION : 1.9.1 ember-1.0.0-rc.3.js:349 
DEBUG: ------------------------------- ember-1.0.0-rc.3.js:349 
Uncaught TypeError: Cannot call method 'find' of undefined appDemo.js:8 
Uncaught Error: assertion failed: an Ember.CollectionView's content must implement Ember.Array. You passed <(generated index controller):ember232> ember-1.0.0-rc.3.js:52 

我修改的腳本是這樣的:

App = Ember.Application.create(); 

App.Router.map(function() { 
    // put your routes here 
}); 

App.IndexRoute = Ember.Route.extend({ 
    model: App.Color.find() 
}); 

App.ColorsController = Ember.ArrayController.extend(); 


// Models 
App.Store = DS.Store.extend({ 
    revision: 12, 
    adapter: 'DS.FixtureAdapter' 
}); 

App.Color = DS.Model.extend({ 
    name: DS.attr('string') 
}); 
App.Color.FIXTURES = [{name: 1}, {name: 2}, {name: 3}, {name: 4}, {name: 5}, {name: 6}]; 

我的HTML看起來像這樣:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Ember Starter Kit</title> 
    <link rel="stylesheet" href="css/normalize.css"> 
    <link rel="stylesheet" href="css/style.css"> 
</head> 
<body> 

    <script type="text/x-handlebars"> 
    <h2>Welcome to Ember.js</h2> 

    {{outlet}} 
    </script> 

    <script type="text/x-handlebars" data-template-name="index"> 
    <ul> 
    {{#each color in controller}} 
     <li>{{color.name}}</li> 
    {{/each}} 
    </ul> 
    </script> 

    <script src="js/libs/jquery-1.9.1.js"></script> 
    <script src="js/libs/handlebars-1.0.0-rc.3.js"></script> 
    <script src="js/libs/ember-1.0.0-rc.3.js"></script> 
    <script src="js/libs/ember-data-latest.js"></script> 
    <script src="js/appDemo.js"></script> 

</body> 
</html> 

我在做什麼錯?

回答

2

第一個錯誤在於

App.IndexRoute = Ember.Route.extend({ 
    model: App.Color.find() 
}); 

您必須定義模型的選擇,因爲像一個函數:

App.IndexRoute = Ember.Route.extend({ 
    model: function() { 
     return App.Color.find(); 
    } 
}); 

第二個錯誤,我就有點不確定,但第一次嘗試了這一點。

+0

太棒了,這個伎倆。在發佈的代碼中還有一個問題,即使修復也很簡單。夾具對象每個都需要一個id。新行看起來像這樣:App.Color.FIXTURES = [{id:1,name:1},{id:2,name:2},... – Daniel 2013-04-25 12:56:47

+0

@Daniel Super :) – mbogh 2013-04-25 22:28:17