ember 2.0:在多个路径中使用相同的控制器

时间:2015-10-14 12:57:09

标签: ember.js ember-controllers

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

我想指定几条路由共享同一个控制器(和模型)。我看到在documentation to an older version的ember中,可以使用" controllerName"来指定控制器。路径定义中的属性,但最新的ember版本已删除了该部分文档。当我测试controllerName属性时,它不起作用。

2 个答案:

答案 0 :(得分: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
});

答案 1 :(得分: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的子路由。所以它很好用。