gpt4 book ai didi

javascript - 调用 unloadRecord 后 Ember.js "calling set on destroyed object"错误

转载 作者:行者123 更新时间:2023-11-29 10:41:44 24 4
gpt4 key购买 nike

在我正在处理的项目的 session 系统中,我在记录上调用 unloadRecord,如下所示:

user.unloadRecord();

我没有调用 destroyRecord 是因为我想手动从存储中卸载记录而不将其保存到服务器。以这种方式从商店中删除记录非常有效,但是当我登录到同一个帐户时——这需要从服务器加载相同的用户记录并使用 store.push 手动将其插入到商店中--我收到以下错误消息:

Uncaught Error: Assertion Failed: calling set on destroyed object     ember.js:3902

同样,这发生在以下行 after 调用 user.unloadRecord():

var user = this.store.push("user", response.user);

其中 response 是由 POST 请求返回到/session 的 JSON 负载,此处显示了一个示例:

{
"sessionToken":"f7a7247467b08818ead27441838df30fed0e0a79",
"user": {
"id":"5499bf5b7f25680761c9df7a",
"email":"test@gmail.com",
"accounts": [/* [account ids] */],
"syncPaths":[/* [sync path ids] */]
}
}

有什么办法可以避免这个错误吗?

更新:

为了响应查看更多代码的请求,here是包含 unloadRecord 调用的文件,here是包含 store.push 调用的文件。

更新 2:我包含了一个 JSON 有效负载的示例,该示例是根据请求向/session 发出的 POST 请求返回的。这是用户的模型:

DS.Model.extend({
email: DS.attr("string"),
accounts: DS.hasMany("account"),
syncPaths: DS.hasMany("syncPaths")
});

最佳答案

尽管使用 unloadAll(),但我一直在为类似的事情而苦苦挣扎。其他人建议这样做,所以也许它会对您有所帮助。

在您的源代码中,ember.jsember.debug.js 如果在本地运行,找到这一行:

Ember['default'].assert('在销毁对象上调用 set', !obj.isDestroyed);

并将其更改为:

Ember['default'].assert("调用 set ('"+ keyName + "') on destroyed object", !obj.isDestroyed);

然后您将看到正在设置的属性,它可以帮助您追踪它在代码中的什么位置挂起。对我来说,keyName 只是“长度”,不是很有用。

关于javascript - 调用 unloadRecord 后 Ember.js "calling set on destroyed object"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27746481/

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