无法访问Ember.js模型的属性

时间:2013-08-03 19:43:28

标签: data-binding ember.js

我在访问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

1 个答案:

答案 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()