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

ember.js新创建的模型记录的ember数据初始状态,ember.js,ember-data,Ember.js,Ember Data,余烬数据2.2.0 刚创建的对象的状态为脏(get('hasDirtyAttributes'返回true),因为每次都会设置新ID 我需要知道记录是什么时候创建的,而不是保存的,“用户”没有修改它。因此,我不能使用脏状态,因为商店会更改它 如果我在创建记录之后修改了内部状态,我会破坏记录内部的某些东西吗 我真正需要的是,当我创建记录时,我需要一个初始状态,我想检测用户何时更改它。因此,我在记录源代码中看到,它使用“setProperties”方法来设置ID,并可选地将数据传递给createRec

余烬数据2.2.0

刚创建的对象的状态为脏(get('hasDirtyAttributes'返回true),因为每次都会设置新ID

我需要知道记录是什么时候创建的,而不是保存的,“用户”没有修改它。因此,我不能使用脏状态,因为商店会更改它

如果我在创建记录之后修改了内部状态,我会破坏记录内部的某些东西吗

我真正需要的是,当我创建记录时,我需要一个初始状态,我想检测用户何时更改它。因此,我在记录源代码中看到,它使用“setProperties”方法来设置ID,并可选地将数据传递给createRecord方法

所以,我想重写createRecord存储metod,在创建它之后将脏状态设置为false。而主体,我如何才能做到这一点

我看到了DS.RootState类的doc,它只讨论了状态:(删除、保存、未提交、飞行中、空、加载、创建、更新、加载)和方法translateTo,但没有改变脏状态

在文件中说:

标志是布尔值,可用于内省记录的 以比检查其状态更方便用户的方式显示当前状态 路径

所以…我将currentState.parentState.isDirty设置为false,并且


编辑:直接设置标志后,记录不会改变状态,保持不变。那么,我该怎么做呢?

我找到的唯一解决方案是测试对象是否是新的。如果是,请重新创建一个新的

如果不是,则调用rollbackAttributes()

并在模型上使用该方法检测更改:

isChanged : function() {
            return this._internalModel.hasChangedAttributes();
        }

如果创建记录,则可以使用
isNew
状态。