18

谁能解释一下最新 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>"));
4

2 回答 2

34

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

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

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

所以Ember.get(namespace, Ember.String.classify(name) + 'Controller')我们现在做的是内部而不是内部container.lookup('controller:' + name)

于 2012-12-30T07:35:49.077 回答
2

供内部使用。

不打算成为公共 API

https://github.com/emberjs/ember.js/commit/5becdc4467573f80a5c5dbb51d97c6b9239714a8

于 2013-01-07T10:12:45.450 回答