任何人都可以在最新的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>"));
答案 0 :(得分:34)
容器的目标是提供一种更通用的机制来描述模块依赖性,而不是我们一直使用的临时方法。
例如,假设您想要找到post
路由的控制器。默认的Ember规则是我们将其查找为App.PostController
。在容器之前,我们只需要在需要进行查找的地方对这些规则进行硬编码(使用classify
和朋友)。
容器为我们提供了在单个位置定义这些规则的方法。作为奖励,可以为需要不同约定的应用程序覆盖规则。
因此,我们现在内部Ember.get(namespace, Ember.String.classify(name) + 'Controller')
代替container.lookup('controller:' + name)
。
答案 1 :(得分:2)