Ember.Container的目的是什么?

时间:2012-12-29 20:42:51

标签: ember.js

任何人都可以在最新的Ember中解释Container模块的用途吗?

在测试的设置和开始中使用它的一个例子:

module("Ember.View - handlebars integration", {
  setup: function() {
    Ember.lookup = lookup = { Ember: Ember };
    lookup.TemplateTests = TemplateTests = Ember.Namespace.create();

    container = new Ember.Container();
    container.optionsForType('template', { instantiate: false });
  }

test("template view should call the function of the associated template", function() {
  container.register('template', 'testTemplate', Ember.Handlebars.compile("<h1 id='twas-called'>template was called</h1>"));

2 个答案:

答案 0 :(得分:34)

容器的目标是提供一种更通用的机制来描述模块依赖性,而不是我们一直使用的临时方法。

例如,假设您想要找到post路由的控制器。默认的Ember规则是我们将其查找为App.PostController。在容器之前,我们只需要在需要进行查找的地方对这些规则进行硬编码(使用classify和朋友)。

容器为我们提供了在单个位置定义这些规则的方法。作为奖励,可以为需要不同约定的应用程序覆盖规则。

因此,我们现在内部Ember.get(namespace, Ember.String.classify(name) + 'Controller')代替container.lookup('controller:' + name)

答案 1 :(得分:2)