Ember.js在加载任何路线之前连接插座

时间:2012-10-03 16:20:21

标签: ember.js

我有3条路线的应用程序:

"/"
"/one"
"/two"

我希望在加载header之前连接footerapplicationView等网点。

由于ember只能导航到叶节点,我无法在/one下嵌套two/,仍然可以导航到/

这意味着我必须分别重复所有3条路线的connectOutlets代码才能连接headerfooter

我无法在路由器的connectOutlets属性上使用root,因为applicationController尚未就绪。

如果在执行任何路由之前我的应用程序首次加载时如何连接applicationView上的插座?

1 个答案:

答案 0 :(得分:1)

您可以在非叶子路由中使用connectOutlets,并且当路由器遍历这些路由到叶子路由时,它将运行那些connectOutlets。要解决您的其他问题(路由到'/'),最好在任何非叶路由中使用索引路由('/')。

编辑:由于我们已经确认在根路由中未定义applicationController,只需将所有内容放在根路由的子节点中似乎可以解决该问题,并且它不会更改功能路由器。

App.Router = Ember.Router.extend({
  root: Ember.Route.extend({
    route: '/',
    app: Ember.Route.extend({
      route: '/',
      connectOutlets: function(router) {
        router.get("applicationController").connectOutlet({
          viewClass: App.HeaderView,
          outletName: 'header'
        });
      },
      index: Ember.Route.extend({
        route: '/',
        connectOutlets: function(router) {
          router.get("applicationController").connectOutlet(...);
        }
      }),
      one: Ember.Route.extend({
        route: '/one',
        connectOutlets: function(router) {
          // if you have a OneController and OneView:
          router.get("applicationController").connectOutlet('one');
        }
      }),
      ...
    })
  })
});