【问题标题】:Ember computed property on a DS model record is not firing when the record is changed更改记录时,DS 模型记录上的 Ember 计算属性未触发
【发布时间】:2018-02-25 12:11:25
【问题描述】:

例如:

我有模型/test.js

export default Model.extend({
  name: attr('string'),
  email: attr('string'),
  address: attr('string'),
  age: attr(),
  phone: attr()
});

在component.js中

list: computed('model.{}', function() { });

在路由中获取数据并将其传递给模板。在子组件中,我正在尝试访问它。最初传递的数据会像

{
  'data': {
    name: 'test'
  }
}

稍后发送数据为

{
  'data': {
    name: 'test',
    email: 'test@gmail.com',
    address: 'XYZ',
    age: 10,
    phone: 423423
  }
}

但是在计算属性中它没有监听第二个更新的数据。我想动态监听模型中的每个属性。如果我喜欢它会起作用的

list: computed('model.{name,email,address,age,phone}', function() { });

但我想要一些其他的解决方案。动态需要监听模型对象中的每个属性。

【问题讨论】:

    标签: ember.js ember-data computed-properties


    【解决方案1】:

    如果您正在处理单个对象,那么您所拥有的就是正确且唯一可行的方法。

    list: computed('model.{name,email,address,age,phone}', function() { });
    

    假设您的模型是对象数组,那么您可以执行以下操作,

    list: computed('model.@each.{name,email,address,age,phone}', function() { });
    

    【讨论】:

      【解决方案2】:

      您可以尝试在计算属性中使用 @each

      列表:计算('model.@each', function(){});

      它适用于模型类中的所有属性。但它只工作一层深。

      【讨论】:

        猜你喜欢
        • 2015-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多