gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:56:14 24 4
gpt4 key购买 nike

我的应用程序中不断出现此错误,但不知道是什么原因造成的。

每当我提交我的数据存储时,它就会发生:

尝试在处于状态 rootState.loaded.updated.inFlight 时处理事件 loadedData。未定义调用

有人吗?

这是导致它的代码:

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

编辑3

事实证明,我在提交我认为导致问题的商店之后调用了 @timestamp = ts_setting.get('value'),因为我正试图从中获取一些数据尚未保存的对象。

最佳答案

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

所以你在调用 Cluey.Setting.find 时得到你的 promise ,然后在某个时间点修改它 (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();
});

关于ember.js - 在 ember 中保存模型时尝试调用 loadedData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com