假设您有/新路线,路由器会创建模型的新实例。
您的模型的属性绑定到页面上的某些输入字段。
我希望能够检测新模型在实例化后是否发生了变化。
不幸的是, model.get('hasDirtyAttributes')
对新实例报告为真,因为它尚未保存。
我想尝试model.get('hasDirtyAttributes') && model.get('dirtyType') === 'updated'
,但在第一次保存之前,dirtyType仍为created
。
答案 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
。