ember.js - 未捕获文件:从特定页面移出时无法读取属性'length'

  显示原文与译文双语对照的内容
0 0

我的Ember应用程序中有一个 search 页面,它是一个带有许多嵌套控制器的复杂页面。

只有在该页面中,当我移到其他页面时,才会收到错误消息:

Uncaught TypeError: Cannot read property 'length' of null

下一页是空白的。 导航栏仍然保留,所以如果我移动到另一页,一切都正常运行。

这是路由器:

this.resource('products', function(){
 this.route('search');
});

这是 routes/products/search.js:

import Ember from"ember";
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin, {});

模板包含 3个嵌套 #each,其中任何一个都具有特定的itemController:

{{#each subset in subsets itemController="products/search/subset"}}
 {{#each panel in subset.panels itemController="products/search/panel"}}
 {{#each value in panel.values itemController="products/search/value"}}

每个 array 都是 Ember.Objects的array,比如:

var Subset = Ember.Object.extend({
 panels: []
});
//
var Panel = Ember.Object.extend({
 values: []
});

我认为在更改页面和清理控制器时调用了一些回调,但是我真的不知道如何找出错误。 我尝试使用控制台调试,但错误来自 vendor.js,没有指向我的文件中的一行。

时间:原作者:1个回答

0 0

经过大量调试和不同尝试后,我发现错误是由于使用了错误的控制器类型。

我将控制器定义为 Ember.ArrayController.extend({});

更改为 Ember.ObjectController.extend({}); 解决了错误

原作者:
...