Какова цель Ember.Container
Может ли кто-нибудь объяснить, какая цель модуля Container находится в последнем Ember?
Пример его использования в настройке и в начале этого теста:
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>"));
Ответы
Ответ 1
Цель контейнера - предоставить более универсальный механизм описания зависимостей модулей, чем используемый ad-hoc подход.
Например, представьте, что вы хотите найти контроллер для маршрута post
. Правила Ember по умолчанию - это то, что мы будем искать его как App.PostController
. Перед контейнером мы просто жестко кодировали бы эти правила везде, где нам нужно было выполнить поиск (используя classify
и друзей).
Контейнер предоставляет нам возможность определять эти правила в одном месте. В качестве бонуса правила могут быть переопределены для приложений, которым требуется другое соглашение.
Итак, вместо Ember.get(namespace, Ember.String.classify(name) + 'Controller')
внутри мы делаем container.lookup('controller:' + name)
.
Ответ 2
Предназначен для внутреннего использования.
Не предназначен для публичного API
https://github.com/emberjs/ember.js/commit/5becdc4467573f80a5c5dbb51d97c6b9239714a8