更改记录时,不会触发DS模型记录上的Ember计算属性

时间:2017-09-16 12:57:36

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

例如:

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

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

2 个答案:

答案 0 :(得分:0)

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

  

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

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

答案 1 :(得分:0)

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

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

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

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