Ember.data 2.2.0
刚创建的对象的状态是脏的(get('hasDirtyAttributes'返回true),因为每次都设置新的ID。
我需要知道记录是什么时候创建的,没有保存,"用户"没有修改它。所以,我不能使用脏状态导致商店更改它。
如果我在创建记录后修改了内部状态,我会破坏记录内部的某些东西吗?
我真正的需要是,当我创建记录时,我需要一个初始状态,我想检测用户何时更改它。所以,我在记录源代码中看到,它使用"setProperties"方法来设置ID,并可选地将数据传递给createRecord方法。
所以,我想重写createRecord存储方法,在创建后将脏状态设置为false。那么主体,我该怎么做呢?
我看到了DS.RootState Class的文档,它只是谈到了这些状态:(已删除、已保存、未提交、inFlight、空、已加载、已创建、已更新、正在加载)和translateTo方法,但没有改变脏状态。
在文档中说:
标志是布尔值,可用于内省记录的当前状态比检查其状态更方便用户路径
所以。。。我将currentState.parentState.isDirty设置为false,并将其设置为
编辑:直接设置标志后,记录状态不变,保持不变。那么,我该怎么办呢?
我找到的唯一解决方案是测试对象是否是新的。如果是,请重新创建一个新的。
如果没有,我调用rollbackAttributes()。
并在模型上使用该方法来检测变化:
isChanged : function() {
return this._internalModel.hasChangedAttributes();
}