2

Ember.js 中的“controller.controllers”是什么?

看起来

this.getPath("controller.controllers") 

在视图中返回 App.router。这非常有用,但我想了解我在做什么:-)

4

1 回答 1

4

当调用initialize你的Ember.Application时,所有控制器都被实例化并设置在路由器上。控制器反过来也会注入一些属性,如在此处实现的那样。如您所见,该controllers属性是对路由器的引用。

Ember.Application.registerInjection({
  name: 'controllers',
  injection: function(app, router, property) {
    if (!/^[A-Z].*Controller$/.test(property)) { return; }

    var name = property.charAt(0).toLowerCase() + property.substr(1),
        controller = app[property].create();

    router.set(name, controller);

    controller.setProperties({
      target: router,
      controllers: router,
      namespace: app
    });
  }
});
于 2012-07-22T18:07:23.607 回答