1

如何在 ember 2.0 中指定在路由中使用哪个控制器?默认是每条路由都有自己的控制器,如果我没有控制器代码,那么在运行时会生成一个默认的空控制器。

我想指定几个路由共享同一个控制器(和模型)。我看到在旧版本的 ember 的文档中,可以在路由定义中使用“controllerName”属性指定控制器,但是对于最新的 ember 版本,该部分文档已被删除。当我测试 controllerName 属性时它不起作用。

4

2 回答 2

4

这不完全是您正在寻找的,但您可以扩展您想在其他路线上使用的控制器。

import FooIndexController from 'ember-app/foo/index/controller';
export default FooIndexController.extend({});

如果你有很多代码应该由许多控制器共享,你也可以考虑使用 mixin。它可以是一个更清洁的解决方案。

import Ember from 'ember';
import BaseController from 'ember-app/mixins/base-controller';
export default Ember.Controller.extend(BaseController, {
    // Code specific to _this_ controller lives here
});
于 2015-10-14T13:28:40.827 回答
2

我想到了。事实证明controllerName确实有效。

我只是这样做了:

// route/home/books/book/details
import Ember from 'ember';
export default Ember.Route.extend({
    controllerName: "home/books/book/index",
});

然后bookbook/details共享控制器。他们已经共享模型,因为该details路线是book. 所以它工作得很好。

于 2015-10-14T14:00:46.790 回答