var App = Em.Application.create();
App.store = DS.Store.create({
adapter: DS.RESTAdapter.create()
});
App.Todo = DS.Model.extend({
title: DS.attr('string')
});
App.set('Todos', DS.ModelArray.create({
store: App.store,
type: App.Todo,
content: []
}));
var todo = App.store.createRecord(App.Todo, {
title: 'Cleanup'
});
App.get('Todos').pushObject(todo);
App.MyView = Em.View.extend({
todosBinding: 'App.Todos'
});
<script type="text/x-handlebars">
{{#view App.MyView}}
{{#each todos}}
Todo: {{title}}
{{/each}}
{{/view}}
</script>
预期产出:
Todo:清理
我真正得到的是:
TODO:
不显示title属性。如果您检查App.Todos.content,则该对象具有正确的标题。为什么它没有出现在视图中?
答案 0 :(得分:2)
我更改了一些代码,为其提供了更标准的架构: 您应该使用控制器来检索数据,而不是自己实例化模型数组,尤其是在使用RestAdapter时...(在此示例中,我将fixtureAdapter替换为RestAdapter,以使其脱机运行)。
var App = Em.Application.create();
App.store = DS.Store.create({
revision: 3,
adapter: DS.fixtureAdapter //DS.RESTAdapter.create()
});
App.Todo = DS.Model.extend({
title: DS.attr('string')
});
App.Todo.FIXTURES = [{
title: 'Cleanup'
}];
App.myController = Em.ArrayController.create({
init: function() {
this.set('content', App.store.findAll(App.Todo));
}
});
App.MyView = Em.View.extend({
todosBinding: 'App.myController.content'
});