【问题标题】:ember.js ember-data initiale state of new created model recordember.js ember-data 新创建模型记录的初始状态
【发布时间】:2015-11-23 10:40:02
【问题描述】:

Ember.data 2.2.0

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

我需要知道记录何时创建、未保存以及“用户”未修改它。所以,我不能使用脏状态导致商店改变它。

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

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

所以,我想在创建后覆盖 createRecord 存储方法以将脏状态设置为 false。校长,我该怎么做?

我看到了 DS.RootState Class 的文档,它只讨论了这些状态:(删除、保存、未提交、inFlight、空、加载、创建、更新、加载)和方法 translateTo 但没有改变脏状态.

在文档中说:

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

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

编辑: 直接设置flag后,记录不改变状态,保持nodorty。那么,我该怎么办?

【问题讨论】:

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

标签: ember.js ember-data


【解决方案1】:

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

如果没有,我调用 rollbackAttributes()。

并使用模型上的那个方法来检测变化:

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

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    相关资源
    最近更新 更多