【发布时间】:2012-04-01 21:59:24
【问题描述】:
您已经开始使用 emberjs 开发应用程序,到目前为止一切都很好,但我注意到一件事,当我不时刷新网页时没有显示任何内容,我在浏览器控制台中收到以下错误: 未捕获的类型错误:无法读取未定义的属性“layoutStates”——ember-layout.js
如果我再次刷新页面,错误就会消失,
为什么会出现此错误? 如何阻止此错误发生?
提前谢谢...
请求的路由管理器代码
App.routeManager = em.RouteManager.create({
rootView: App.main,
home: em.LayoutState.create({
selector: '.inbox',
viewClass: App.InboxView,
enter: function (stateManager, transition) {
this._super(stateManager, transition);
}
}),
View2: em.LayoutState.create({
route: 'contacts',
selector: '.contacts',
viewClass: App.ContactsView,
enter: function (stateManager, transition) {
this._super(stateManager, transition);
}
}),
View3: em.LayoutState.create({
route: 'account',
selector: '.account',
viewClass: App.AccountView,
enter: function (stateManager, transition) {
this._super(stateManager, transition);
}
})
});
错误发生在 ember-layouts.js 的第 126 行
init: function() {
// This is currently experimental. We allow
// the view itself to define it's substates
// for better encapsulation. To do this, set
// the layoutStates property.
var viewClass = get(this, 'viewClass');
if(viewClass) {
var layoutStates = get(viewClass, 'proto').layoutStates;
set(this, 'states', layoutStates);
}
this._super();
},
【问题讨论】:
-
你能添加你的RouteManager代码吗?
-
@louiscoquio RouteManager 代码按要求
-
这里没看出什么问题。你确定App.main是在RouteManager创建之前设置的,在body创建之后添加到body中的吗?如果您不知道,您可以添加插入 App.main 视图的主 html 页面吗?
-
@louiscoquio 是的 App.main 在之前,它在 RouteManager 创建后添加到 DOM 中,我一直在研究它,发现问题存在于 ember-layouts 中的以下行.js 见上面我不能在这里插入代码它说它是实验性的,所以我将不得不进一步挖掘代码以查看发生了什么,我认为所需的文件之一没有按时加载,我试图克服这个使用require.js的订单插件
标签: javascript ember.js