我有以下Ember.js代码(在模型中):
subdata: DS.hasMany('App.Subdata'),
message_subdata: function() {
return this.get('subdata').filterBy('tag', 'message');
}.property('subdata', 'subdata.@each')
这在RC7中运作得很好。在RC8 +中,我知道他们改变了观察者的射击方式,但对于我的生活,我无法弄清楚如何让它再次发挥作用。我知道它确保在观察属性之前调用get
,但我在模板中使用此属性,因此模板没有到get
财产?
现在,当页面首次加载时,没有显示任何数据,因为尚未加载任何子数据。这就是它一直以来的方式。但是在RC7中,只要加载了记录,它就会激活观察者并更新页面。现在,由于某种原因,观察者没有更新,页面也不会更新。我似乎强迫它更新的唯一方法是更改subdata
属性(或使用notifyPropertyChange
模拟更改)。
如何让我的属性像RC7一样工作?
编辑:我想我会快速更新一下排序和过滤的方法。这可能不是最好的方式,但我在这个解决方案上摆弄了一段时间。subdata: DS.hasMany('App.Subdata'),
message_subdata_filtered: Ember.computed.filterBy('subdata', 'tag', 'message'),
message_subdata: Ember.computed.sort('message_subdata_filtered', function(a,b) {
return a.get('timestamp') - b.get('timestamp');
});
可能有一种方法可以在一行中完成,但这对我有用。
答案 0 :(得分:1)
我猜计算数组的新方法是使用类似的东西:
subdata: DS.hasMany('App.Subdata'),
message_subdata: Ember.computed.filterBy('subdata', 'tag', 'message')