Есть ли другая возможность работать с контроллерами и представлениями Ember.Router? Структура моего приложения обычно зависит от require.js, который заботится о соответствующих зависимостях.
В моем примере я использую App.ApplicationController в качестве основного контроллера маршрутизатора.
Вот jsfiddle: http://jsfiddle.net/mediastuttgart/uMKGt/1/
Но есть ли возможность установить это вручную? Я нашел это сообщение фиксации https://github.com/emberjs/ember.js/commit/be69395f5eec4187b1df052d7386bcda45f79475, где я могу увидеть, как установить контроллер и просмотреть вручную (во всяком случае, не смог получить это работающий). Но не смог найти ни одного примера вроде:
App = Ember.Application.create();
App.MyController = Ember.Controller.extend({});
App.MyView = Ember.View.extend({});
Router = Ember.Router.extend({
applicationController : App.MyController,
root : Ember.Route.extend({
index : Ember.Route.extend({
route : '/',
connectOutlets : function (router) {
router.get('applicationController').connectOutlet(App.MyView);
}
})
}),
...
});
РЕДАКТИРОВАТЬ
Я пытаюсь объяснить это немного подробнее. Хотя мы используем require.js для управления зависимостями, у нас есть несколько контроллеров, которые отвечают за свои части всего приложения. Допустим, у нас есть форма подписки на рассылку новостей. Контроллер, используемый для этого сценария, структурирован в
- app
-- controller
--- newsletter
---- signup.js
--- cart
--- checkout
-- view
-- model
-- router
-- template
. Поскольку мы используем пользовательскую функцию для создания пространств имен, Em.Provide('App.Controller.Newsletter');
, которая создает объект в App. Контроллер.Информационный бюллетень
. Этот объект теперь служит базой контроллера для всего нашего приложения для рассылки новостей. Начиная с App.Controller.Newsletter.Signup = Ember.Controller.extend({});
нам нужно передать этот экземпляр как «ApplicationController» для маршрутизатора. Как видите, мы не можем просто использовать App.ApplicationController
для создания экземпляра контроллера для Ember.Router.