我在访问Ember.js中的模型属性时遇到问题
型号:
App.Page = DS.Model.extend({
title: DS.attr('string'),
parent: DS.attr('number'),
});
控制器:
App.BlocksController = Ember.ArrayController.extend({
pages: function() {
return App.Page.find();
}.property(),
pageTree: function() {
var pages = this.get('pages.content'),
pageTree = new Tree();
for(var i = 0; i < pages.length; i++) {
console.log( pages[i], pages[i].id, pages[i].parent );
}
pageTree.insertList(pages);
return pageTree;
}.property('pages.@each'),
});
我在模板/视图中使用pageTree
属性。 console.log
确实打印了从API检索到的对象(包括id
),但是,我无法访问其属性(parent
给我undefined
,但它是在API响应中)。
一条console.log
行看起来像这样:
Object {id: "5", clientId: 19, type: function, data: Object, prematerialized: Object…}
"5"
undefined
我假设使用pages.@each
作为属性,pageTree
属性应该绑定到(已加载的)页面数组。
是的,pages
不是由ArrayController控制的模型,而是一组辅助模型。
当我在模板中使用{{#each pages}}{{parent}}{{/each}}
时,它可以正常工作!所以我想,这个问题与数据绑定有关吗?
作为参考,我在Ember 1.0.0-rc.6.1,ember-data 0.13,ember-data-django-rest-adapter 0.13
答案 0 :(得分:2)
好的,感谢IRC:
pageTree: function() {
var pages = this.get('pages'),
pageTree = new Tree();
pages.forEach(function(page) {
//console.log(page, page.get('parent'));
pageTree.insertAt(page.get('parent'), page );
});
return pageTree;
}.property('pages.@each'),
所以,不是.content
,而是forEach
和.get()
。