更改记录时,DS 模型记录上的 Ember 计算属性未触发
Posted
技术标签:
【中文标题】更改记录时,DS 模型记录上的 Ember 计算属性未触发【英文标题】:Ember computed property on a DS model record is not firing when the record is changed 【发布时间】: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() );
但我想要一些其他的解决方案。动态需要监听模型对象中的每个属性。
【问题讨论】:
【参考方案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());
它适用于模型类中的所有属性。但它只工作一层深。
【讨论】:
以上是关于更改记录时,DS 模型记录上的 Ember 计算属性未触发的主要内容,如果未能解决你的问题,请参考以下文章
EmberJS:更改加载模型的 url (ember-data)
Ember js - 更新其他表后 Hasmany 关系中断