在Ember.js中迭代hasMany / belongsTo关系

时间:2014-05-22 18:51:13

标签: javascript ember.js ember-data

我希望将给定草稿(父元素)的子元素(注释)作为计算属性从Ember.DocumentController返回。 在这种情况下,我想返回属于editableDraft属性的所有注释。

或者有更好的方法吗?

App.DocumentController = Ember.ObjectController.extend({
  editableDraft: function() {
    var editDrafts = this.get('model.drafts').filterBy("editable", true);
    var draft = editDrafts.length ? editDrafts[0] : null;
    return draft;
  }.property('model.drafts.@each.editable'),
  editableNotes: function() {
    var eDraft = this.get("editableDraft"); // want to return notes of editableDraft
    return eDraft.get("notes");
  }.property('model.drafts.@each.editable')
});

请参阅jsbin!

中的测试应用

1 个答案:

答案 0 :(得分:0)

两个问题。一,在document模板中,这里:

{{render 'editableDraftNotes' notes}}

使用提供的参数替换控制器和模型时,Render会发生一些奇怪的事情。在这种情况下不是你需要的。试试这个:

{{partial 'editableDraftNotes'}}

两个,在editableNotes属性中。您应该听editableDraft上的更改。另外,因为Ember.Data返回promises,所以你必须链接你的获取(this.get("A.B")而不是this.get("A").get("B"))。试试这个:

  editableNotes: function() {
    return this.get("editableDraft.notes");
  }.property('editableDraft')

工作jsbin here