我有一个jsbin来说明我的问题:http://emberjs.jsbin.com/xuperezacuha/1/
我有一个控件,其属性是对象(父对象)的集合,每个父对象都有一个对象集合(子对象)。例如,每本书都有一系列章节的书籍集合。
来自jsbin:我的索引控制器上有一个名为allChapters
的计算属性,当新章节添加到任何父级时,它不会重新计算。
如何将计算属性基于添加到任何父对象子集合的子对象?
答案 0 :(得分:3)
使用computed属性创建一个ember对象,并将子对象包装在该对象中。
App.Book = Em.Object.extend({
chapterLength: Em.computed.alias('chapters.length')
});
App.IndexRoute = Ember.Route.extend({
model: function() {
return [
App.Book.create({name: 'red', chapters: []}),
App.Book.create({name: 'blue', chapters: []}),
App.Book.create({name: 'yellow', chapters: []})
];
}
});
然后观察计算属性
allChapters: function() {
_ret = []
this.get('model').forEach(function(book) {
book.get('chapters').forEach(function(chapter) {
_ret.pushObject(chapter);
})
})
return _ret;
}.property('model.@each.chapterLength'),