1

正如我在这里的几个问题中提到的那样,我正在迁移一个已经存在且正在运行的 Ember 项目以使用 Ember App Kit,我遇到了几个问题......这是另一个以前不是问题的“问题”:)

我有一个NotificationCollectionController放在app/controllers/notification/collection.js.

文件“应用程序/控制器/通知/collection.js”:

export default Ember.ArrayController.extend({
  addNotification: function (options) {
    // some code
  },
  notifyOnDOMRemove: function (notification) {
    this.removeObject(notification);
  }
});

由于这是通过命名插座呈现的通知的控制器,因此我没有为它声明路由。

在我的ApplicationRoute我想在一个函数中访问这个控制器

文件: 'app/routes/application.js'

import BaseRoute from 'appkit/routes/base';

export default BaseRoute.extend({
  addGlobalNotificationCollection: function () {
    var controller = this.controllerFor('notificationCollection');
    // some more code...
  }
});

但是,一旦应用程序启动并调用了这段代码,我就发现了以下错误:

“断言失败:找不到名为'notificationCollection'的控制器。确保此路由存在并且已至少输入一次。如果您正在访问与路由无关的控制器,请确保控制器类已明确定义。”

这是什么意思,为什么会被抛出?我该怎么做才能让它再次运行?

4

1 回答 1

2

我没有意识到Ember App Kit 网页的命名约定部分已经给出了提示

它说,控制器的命名约定是,例如:stop-watch.js

如果它是一个路由控制器,我们可以像这样声明嵌套/子控制器: app/controllers/test/index.js

所以我把我NotifcationCollectionController的放进去controllers/notification-collection.js并称之为Route#controllerFor('notification-collection'),一切都按预期工作:)

于 2014-04-01T10:51:58.153 回答