Ember.Container 的用途是啥

Posted

技术标签:

【中文标题】Ember.Container 的用途是啥【英文标题】:What is the purpose of the Ember.ContainerEmber.Container 的用途是什么 【发布时间】:2012-12-14 16:15:28 【问题描述】:

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

【问题讨论】:

我认为(并希望)这将被记录在案。我知道@tchak 已经解决了这个问题,也许他可以在这里给出解释。 【参考方案1】:

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

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

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

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

【讨论】:

但据我了解,这仅用于内部 API,而不是公共 API,对吧?【参考方案2】:

供内部使用。

不打算成为公共 API

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

【讨论】:

容器的某些部分是公开的,可以(应该)用于注册/查找/注入依赖项。您链接的提交谈论#controllerFor。 IE。当已经有公共机制可以访问容器时,您不应该访问容器(Ember 抽象出这些依赖注入)。 "Public api for the container is still in flux."

以上是关于Ember.Container 的用途是啥的主要内容,如果未能解决你的问题,请参考以下文章

jenkins 用户文件夹的用途是啥,这些配置文件是啥?

SCSI LUN id 是啥意思,它的用途是啥?

Lambda表达式的主要用途是啥?

系统表 master..spt_values 的用途是啥,其值的含义是啥?

Spring中@autowired注释的用途是啥。术语自动装配是啥意思[重复]

Flow 中星号 (*) 类型的用途是啥,TypeScript 中的等价物是啥?