我有一个路径,当我转换回它的时候,它给了我一个很大的错误,它的堆栈跟踪不能帮助我找出出了什么问题。
处理路由时出错: project.details断言失败:对已销毁对象进行调用:断言失败:在Error.EmberError (http://starqa.fmr.com/assets/vendor.js:22615:21) at Object.Ember.default.assert (http://starqa.fmr.com/assets/vendor.js:15716:13) at Object.set (http://starqa.fmr.com/assets/vendor.js:26367:22) at exports.default.mixin.Mixin.create.set (http://starqa.fmr.com/assets/vendor.js:41034:20) at Ember.Object.extend.flushCanonical (http://starqa.fmr.com/assets/vendor.js:69769:14)调用已销毁对象的新错误(本机)flushCanonical (http://starqa.fmr.com/assets/vendor.js:71525:22) at Queue.invoke (http://starqa.fmr.com/assets/vendor.js:11425:18) at Object.Queue.flush (http://starqa.fmr.com/assets/vendor.js:11490:13) at Object.DeferredActionQue
通过浏览我的路径并注释掉一些内容,我在我的项目路由中发现了这一点:
export default Ember.Route.extend(AuthenticatedRouteMixin, {
model: function(params) {
if (params.q) {
return this.store.find('project', params);
} else {
var _this = this;
Ember.run(function() {
_this.store.unloadAll('project');
});
return this.store.findAll('project', {reload: true});
}
}如果我评论掉第7-9行:
/*
Ember.run(function() {
_this.store.unloadAll('project');
});
*/然后错误就消失了,转换开始了。这段代码是由其他人编写的,我认为这与刷新商店中的模型有关,但我不明白它为什么会导致“对被破坏对象的调用”错误。
任何帮助都将不胜感激。
发布于 2015-10-15 17:40:07
它看起来像这条路线服务的两个单一的项目param (q是指定的)和所有的项目,这随手听起来远不是完美的设计为成员。理想情况下,您应该有两个路线-项目和项目路线。那是在安博的建筑方面。
在功能方面,这是发生在你的对象是由成员释放,但你试着第二次访问它。我怀疑这是在Ember.run在另一个循环中运行卸载时发生的,而我不认为这是需要的。尝试从ember循环中删除卸载所有的内容,或者大多数情况下您可以完全不使用它来运行(为什么每次调用路由时都要删除当前缓存中的所有对象?
this.store.unloadAll('project');
return this.store.findAll('project', {reload: true});或者干脆把它放在一边(我认为保留评论应该对你有用)。
https://stackoverflow.com/questions/33154498
复制相似问题