简体   繁体   English

ember 2.0:在多个路由中使用同一控制器

[英]ember 2.0: use same controller in several routes

How to specify which controller to use in a route in ember 2.0? 如何指定在ember 2.0中的路由中使用哪个控制器? Default is that each route has its own controller and if I don't have code for a controller then a default empty controller is generated at runtime. 默认是每个路由都有自己的控制器,如果我没有控制器的代码,则会在运行时生成默认的空控制器。

I want to specify that several routes share the same controller (and model). 我想指定多个路由共享相同的控制器(和模型)。 I see that in the documentation to an older version of ember it is possible to specify the controller with the "controllerName" property in the routes definition but that part of the documentation has been removed for the lastest ember version. 我看到在较旧版本的余烬文档中,可以在路由定义中使用“ controllerName”属性指定控制器,但该文档的一部分已针对最新余烬版本删除。 And when I test the controllerName property it doesn't work. 当我测试controllerName属性时,它不起作用。

It's not exactly what you are looking for but you could extend the controller that you want to use on the other routes. 这并不是您要找的东西,但是您可以扩展要在其他路线上使用的控制器。

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

You may also consider a mixin if you have a lot of code that should be shared by many controllers. 如果您有许多应由许多控制器共享的代码,则也可以考虑使用mixin。 It can be a much cleaner solution. 这可能是一个更清洁的解决方案。

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
});

I figured it out. 我想到了。 It turns out controllerName does work after all. 事实证明controllerName确实可以正常工作。

I just did this: 我只是这样做:

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

Then book and book/details shares controller. 然后bookbook/details共享控制器。 They already share model because the details route is a sub-route of book . 他们已经共享了模型,因为details路线是book的子路线。 So it works nicely. 因此效果很好。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM