2015-10-14 5 views
1

Как указать, какой контроллер использовать в маршруте в ember 2.0? По умолчанию, каждый маршрут имеет свой собственный контроллер, и если у меня нет кода для контроллера, то во время выполнения создается пустой контроллер по умолчанию.ember 2.0: использовать тот же контроллер в нескольких маршрутах

Я хочу указать, что несколько маршрутов используют один и тот же контроллер (и модель). Я вижу, что в documentation to an older version из ember можно указать контроллер с свойством «controllerName» в определении маршрутов, но эта часть документации была удалена для последней версии ember. И когда я проверяю свойство controllerName, он не работает.

+1

Возможно, вы могли бы использовать наследование и/или миксины для совместного использования одной и той же логики на нескольких контроллерах. –

+0

Можете ли вы поделиться более подробной информацией о логике, которую вы пытаетесь использовать среди маршрутов? –

+0

Я решил свой собственный вопрос. Ниже приведен ответ. –

ответ

3

Это не совсем то, что вы ищете, но вы можете расширить контроллер, который хотите использовать на других маршрутах.

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

Thanx. В этом есть смысл. Не то, что я искал прямо сейчас, но эти трюки также могут стать полезными. –

2

Я понял. Оказывается, controllerName действительно работает.

Я просто сделал это:

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

Затем book и book/details акций контроллера. Они уже разделяют модель, поскольку маршрут details является подпунктором book. Так что это хорошо работает.