【问题标题】:Computed property doesn't update计算属性不更新
【发布时间】:2013-09-02 21:25:25
【问题描述】:

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

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

【问题讨论】:

    标签: ember.js


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-18
      • 2019-10-19
      • 2012-08-04
      • 2019-04-18
      • 2021-03-20
      • 2019-07-13
      • 2019-07-14
      相关资源
      最近更新 更多