我还有其他可能处理Ember.Router控制器和视图吗?我的app结构通常依赖于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.Controller.Newsletter
创建一个对象。此对象现在充当整个新闻稿应用程序的控制器基础。从App.Controller.Newsletter.Signup = Ember.Controller.extend({});
开始,我们需要将此实例作为路由器的“ApplicationController”传递。如您所见,我们不能只使用App.ApplicationController
来实例化Ember.Router的控制器。
答案 0 :(得分:9)
对requirejs一无所知,但我认为唯一的事情是定义一个
App.ApplicationController = Ember.Controller.extend({...behavior here...})
然后,在致电时
App.initialize()
然后框架会自动将此控制器注入路由器。