如何在Ember.Router中设置ApplicationController

Mic*_*und 5 javascript ember.js ember-old-router

我有没有其他可能处理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);
            }
        })
    }),
    ...
});
Run Code Online (Sandbox Code Playgroud)

编辑

我想详细解释一下这个问题.虽然我们使用require.js来管理或依赖,但我们有多个控制器负责整个应用程序的各个部分.假设我们有一份简报注册表格.用于此场景的控制器是结构化的

- app
-- controller
--- newsletter
---- signup.js
--- cart
--- checkout
-- view
-- model
-- router
-- template
Run Code Online (Sandbox Code Playgroud)

因为我们使用自定义函数来生成在Em.Provide('App.Controller.Newsletter');其中创建对象的命名空间App.Controller.Newsletter.此对象现在充当整个新闻稿应用程序的控制器基础.从App.Controller.Newsletter.Signup = Ember.Controller.extend({});我们开始,我们需要将此实例作为路由器的"ApplicationController"传递.如您所见,我们不能仅仅使用App.ApplicationController实例化Ember.Router的控制器.

sly*_*7_7 9

什么都不知道requirejs,但我认为唯一的事情是定义一个

App.ApplicationController = Ember.Controller.extend({...behavior here...})
Run Code Online (Sandbox Code Playgroud)

然后,在打电话时

App.initialize()
Run Code Online (Sandbox Code Playgroud)

然后,框架将自动将此控制器注入路由器.

  • 注意命名在这里很重要.Ember在您的应用程序命名空间下查找ApplicationController.如果原始问题使用了它而不是MyApplicationController它会自动工作. (6认同)