ember.js ember数据初始化新创建的模型记录的状态



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();
        }

最新更新