Ember 在 DS 模型记录上计算的 属性 在更改记录时未触发

Ember computed property on a DS model record is not firing when the record is changed

例如:

我有model/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() { });

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

您可以尝试在计算 属性.

中使用 @each

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

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

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

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

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

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