检测新创建的模型是否已更改属性

时间:2015-11-13 20:16:56

标签: ember.js ember-data

假设您有/新路线,路由器会创建模型的新实例。

您的模型的属性绑定到页面上的某些输入字段。

我希望能够检测新模型在实例化后是否发生了变化。

不幸的是,

model.get('hasDirtyAttributes')对新实例报告为真,因为它尚未保存。

我想尝试model.get('hasDirtyAttributes') && model.get('dirtyType') === 'updated',但在第一次保存之前,dirtyType仍为created

2 个答案:

答案 0 :(得分:3)

您可以致电model.changedAttributes()并查看它是否为空(docs),但您无法观察到它。前 -

Object.keys(this.get('model').changedAttributes()).length > 0

我不知道在这种情况下您可以观察到的一般属性。您必须观察指定的属性列表。

您可以覆盖模型上的set并让它设置一个值 -

set: (key, value) ->
    @attributeHasChanged = true
    @_super(key, value)

答案 1 :(得分:0)

您可以在该模型上创建一个取决于任何声明属性的计算属性,如果任何属性与其初始值不同,则返回true,否则为false。

为了获得更好的性能,您只能在model.get('isNew') === true

时计算此属性