gpt4 book ai didi

ember.js - emberJS 嵌套路由 TypeError : cannot read property 'renderer' of undefined

转载 作者:行者123 更新时间:2023-12-02 22:15:35 26 4
gpt4 key购买 nike

这让我有点生气。这看起来是一个很简单的事情,但我无法让它发挥作用。

这是我的路由器:

App.Router.map(function() {

this.resource('pages', function() {
this.resource('page', { path: '/:slug' }, function() {
this.route('edit');
});
this.route('add');
});
}

问题出在“添加”路线上。

设置如下:

App.PagesAddRoute = Ember.Route.extend({});
App.PagesAddController = Ember.Controller.extend({});
App.PagesAddView = Ember.View.extend({});


// templates/pages/add.hbs
<h1>Add New Page</h1>

templates/pages.hbs 中有一个 socket ,页面模板可以很好地渲染它。

我在所有路由、 Controller 和 View 对象的 init 方法上添加了 console.log。每个都正确实例化,但是当我导航到/pages/add 时,我收到以下错误消息:

TypeError {
message: "Cannot read property 'rerender' of undefined",
stack: "TypeError: Cannot read property 'rerender' of undefined
at CoreView.extend.rerender (http://localhost:9000/bower_components/ember/ember.js:26575:33)
at null._controllerDidChange (http://localhost:9000/bower_components/ember/ember.js:26494:14)
at applyStr (http://localhost:9000/bower_components/ember/ember.js:7995:29)
at sendEvent (http://localhost:9000/bower_components/ember/ember.js:3320:13)
at notifyObservers (http://localhost:9000/bower_components/ember/ember.js:6226:9)
at propertyDidChange (http://localhost:9000/bower_components/ember/ember.js:6076:7)
at set (http://localhost:9000/bower_components/ember/ember.js:6493:13)
at Descriptor.ComputedPropertyPrototype.set (http://localhost:9000/bower_components/ember/ember.js:1708:11)
at set (http://localhost:9000/bower_components/ember/ember.js:6461:14)
at setupView (http://localhost:9000/bower_components/ember/ember.js:38915:7)"
}

我正在运行 1.6.0-beta.5(但我在 1.5.1 中遇到了同样的问题)。有人以前经历过吗?

提前致谢。

更新:

这是页面路由、 Controller 和 View :

App.PagesRoute = Ember.Route.extend({
model: function() {
return this.get('store').find('page');
}
});

App.PagesController = Ember.Controller.extend({});
App.PagesView = Ember.View.extend({});

最佳答案

好吧,所以这很尴尬......

在开发过程中,我在路由、 Controller 和 View 的 init 方法中记录了一些内容,如下所示:

App.PagesAddRoute = Ember.Route.extend({
init: function() {
console.log('PagesAddRoute loaded');
}
});

这很糟糕...好吧,如果您想调试代码,则不是这样,但如果您确实重写了 init 方法,请确保调用父级 init使用 this._super() 的方法:

App.PagesAddRoute = Ember.Route.extend({
init: function() {
console.log('PagesAddRoute loaded');
this._super(); // Ember.Route.init called, so route loads correctly.
}
});

这实际上是导致问题的原因...我首先记录内容的原因是因为我最初将模板放在 /templates/page/add 中,而不是 /模板/页面/添加。我的想法是我正在使用对象(页面),而不是数组(页面)...但是,文件系统应该与路由器匹配:

this.resource('pages', function() {
this.resource('page', { path: '/:slug' }, function() {
this.route('edit');
});
this.route('add'); // add sits within pages, so the path is pages/add
});

希望这仍然可以帮助某人。

关于ember.js - emberJS 嵌套路由 TypeError : cannot read property 'renderer' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24118991/

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