5

我还有其他可能处理 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.Controller.Newsletter. 这个对象现在作为我们整个时事通讯应用程序的控制器基础。首先,App.Controller.Newsletter.Signup = Ember.Controller.extend({});我们需要将此实例作为路由器的“ApplicationController”传递。如您所见,我们不能只使用App.ApplicationControllerEmber.Router 来实例化控制器。

4

1 回答 1

9

对requirejs一无所知,但我认为唯一的事情就是定义一个

App.ApplicationController = Ember.Controller.extend({...behavior here...})

然后,当调用

App.initialize()

然后框架会自动将这个控制器注入到路由器中。

于 2012-06-25T18:55:43.773 回答