Ember.js 在ember中保存模型时尝试调用loadedData

Ember.js 在ember中保存模型时尝试调用loadedData,ember.js,ember-data,Ember.js,Ember Data,我一直在我的应用程序中遇到这个错误,但不知道是什么原因造成的 每当我提交数据存储时,就会发生这种情况: 试图在状态为rootState.loaded.updated.inFlight时处理事件loadedDataon。用未定义的 有人吗 以下是导致该问题的代码: var ts_setting; ts_setting = Cluey.Setting.find(Cluey.SettingsKeyIDs.API_TIMESTAMP); if (ts_setting.get('value') !=

我一直在我的应用程序中遇到这个错误,但不知道是什么原因造成的

每当我提交数据存储时,就会发生这种情况:

试图在状态为rootState.loaded.updated.inFlight时处理事件
loadedData
on。用未定义的

有人吗

以下是导致该问题的代码:

var ts_setting;

ts_setting = Cluey.Setting.find(Cluey.SettingsKeyIDs.API_TIMESTAMP);

if (ts_setting.get('value') != null) {
  console.log("Found Timestamp");
} else {
  console.log("Creating Initial Timestamp...");
  ts_setting.set("id", Cluey.SettingsKeyIDs.API_TIMESTAMP);
  ts_setting.set("value", 0);
  Cluey.store.commit();
}
编辑

我将其归结为以下代码(用coffeescript编写)导致了错误。问题是,我第一次运行代码时,当对象第一次不存在于数据存储中时,它运行良好。然后,当我在已经包含具有指定id的记录的数据存储上运行代码时,就会发生错误。这可能有助于您破译正在发生的情况

ts_setting = Cluey.Setting.find(Cluey.SettingsKeyIDs.API_TIMESTAMP)
ts_setting.get('value')
ts_setting.set("id", Cluey.SettingsKeyIDs.API_TIMESTAMP)
ts_setting.set("value", 0)
Cluey.store.commit()
编辑2


我在创建记录时遇到类似问题:

ts_setting = Cluey.Setting.createRecord
    id: Cluey.SettingsKeyIDs.API_TIMESTAMP,
    value: 0

Cluey.store.commit()
上面的代码给了我这个错误:

Uncaught Error: Attempted to handle event `loadedData` on <Cluey.Setting:ember327:1> while in state rootState.loaded.created.inFlight. Called with undefined
Uncaught错误:试图在状态为rootState.loaded.created.inFlight时处理事件'loadedData'。用未定义的
编辑3


结果证明,我在提交存储后调用了
@timestamp=ts_setting.get('value')
,我认为这是导致问题的原因,因为我试图从尚未保存的对象中获取一些数据。

加载数据是异步的
Cluey.Setting.find
返回一个承诺,一旦XHR请求成功,该承诺将得到解决/更新

因此,当您调用
Cluey.Setting.find
,修改它(
ts_Setting.set(“value”,0)
)时,您得到了您的承诺,然后在某个时间点,您从服务器上得到了结果(来自
find
的响应)

此时,ember数据会引发错误,因为它无法更新正在修改的记录

您要做的是等待记录完全加载,然后再修改和保存它

ts_setting = Cluey.Setting.find(Cluey.SettingsKeyIDs.API_TIMESTAMP);
ts_setting.one('didLoad', function() {
  ts_setting.set("value", 0);
  Cluey.store.commit();
});

能否添加生成此错误消息的代码?此错误与状态有关。我已在上面添加了代码。我认为此代码不会导致此问题。提交后你在做什么?您是否正在重定向到应该显示所有记录或以某种方式从数据库检索记录的路由?在我看来,您正在尝试从后端获取记录,而该记录尚未提交。我已使用导致错误的最低形式的代码更新了原始帖子。我在创建记录时遇到了类似的问题,我用令人不快的代码行更新了原始帖子在控制台中键入这些行时,如果没有修改任何记录,您是否会遇到此错误?不,奇怪的是,当我直接在控制台中键入时,我没有遇到此错误,因此我猜您的
id
不是唯一的。您可能已经有一个带有特定
Cluey.SettingsKeyIDs.API_TIMESTAMP
id的记录。它是什么类型的值?它是一个整数。我将调查是否是这种情况,但当我在空的本地存储上运行该代码时,就会发生这种情况