正如我在几个问题中提到的,我正在迁移一个已经存在并正在运行的Ember项目,使用Ember应用程序工具包,我遇到了几个问题…这是另一个以前不存在的"问题":)
我有一个NotificationCollectionController
放在app/controllers/notification/collection.js
下面。
"app/控制器/通知/collection.js":
export default Ember.ArrayController.extend({
addNotification: function (options) {
// some code
},
notifyOnDOMRemove: function (notification) {
this.removeObject(notification);
}
});
由于这是通过命名出口呈现的通知的控制器,所以我没有为它声明路由。
在我的ApplicationRoute
中,我想在函数
文件:"app/线路/application.js"
import BaseRoute from 'appkit/routes/base';
export default BaseRoute.extend({
addGlobalNotificationCollection: function () {
var controller = this.controllerFor('notificationCollection');
// some more code...
}
});
但是一旦应用程序启动,这段代码被调用,我追踪到以下错误:
"断言失败:名为'notificationCollection'的控制器可以。没有找到。确保此路由存在并且已经存在至少输入一次。如果你正在访问一个控制器与路由关联时,确保控制器类是显式的定义的。"
它是什么意思,为什么被抛出?我要怎么做才能使再次运行 ?
我没有意识到提示已经在烬应用程序工具包网页的命名约定部分给出了:
它说,控制器的命名约定是,例如:stop-watch.js
如果它是一个路由控制器,我们可以这样声明嵌套/子控制器:
app/controllers/test/index.js
所以我把我的NotifcationCollectionController
在controllers/notification-collection.js
,并称之为Route#controllerFor('notification-collection')
和一切工作如预期:)