计算属性不会更新

时间:2013-09-02 21:25:26

标签: ember.js

我有以下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');
});

可能有一种方法可以在一行中完成,但这对我有用。

1 个答案:

答案 0 :(得分:1)

我猜计算数组的新方法是使用类似的东西:

subdata: DS.hasMany('App.Subdata'),
message_subdata: Ember.computed.filterBy('subdata', 'tag', 'message')