Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 检测新创建的模型是否更改了属性_Ember.js_Ember Data - Fatal编程技术网

Ember.js 检测新创建的模型是否更改了属性

Ember.js 检测新创建的模型是否更改了属性,ember.js,ember-data,Ember.js,Ember Data,假设您有一条/新路由,路由器将创建模型的新实例 模型的属性绑定到页面上的某些输入字段 我希望能够检测新模型在实例化后是否发生了更改 model.get('hasDirtyAttributes')不幸地报告新实例为true,因为它尚未保存 我想尝试model.get('hasDirtyAttributes')&&model.get('dirtyType')=='updated'但在第一次保存之前,dirtyType仍然是创建的。您可以在该模型上创建一个计算属性,该属性依赖于任何声明的属性,如果任何

假设您有一条/新路由,路由器将创建模型的新实例

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

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

model.get('hasDirtyAttributes')
不幸地报告新实例为true,因为它尚未保存


我想尝试
model.get('hasDirtyAttributes')&&model.get('dirtyType')=='updated'
但在第一次保存之前,dirtyType仍然是
创建的

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


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

时计算此属性。您可以调用
model.changedAttributes()
并查看它是否为空(),但无法观察它。前-

Object.keys(this.get('model').changedAttributes()).length > 0
我不知道在这种情况下你能观察到的一般属性。您必须遵守指定的属性列表

或者您可以覆盖模型上的
设置
,并将其设置为一个值-

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

是的。由于
changedAttributes()
返回一个对象,因此我最终得到了
Ember.keys(this.get('model').changedAttributes())。长度>0
太棒了!如果答案解决了问题,请接受。我会让它稍微长一点,让其他人回答,然后接受。你能编辑你的答案以包含我粘贴的片段吗?另外,由于Ember.keys已被弃用,因此它应该是Object.keys,对此表示抱歉