В нотах this commit команда Ember ясно указала, что App.__container__.lookup()
не может попасть на контроллеры. Вместо этого мы должны использовать свойство needs
.Идиоматический способ использования __контейнер __. LookupFactory в Ember.js
Я понимаю обоснование этого и идиоматический способ доступа к одноточечным контроллерам.
Однако в моем приложении у меня есть некоторые случаи, когда мне нужны контроллеры экземпляров. В этом случае я использую App.__container__.lookupFactory()
получить в прототипе, который я могу тогда create()
или extend()
Есть ли лучший способ сделать это (без использования __container__
Edit:
Вот пример использования.
App.MyContainerView = Ember.ContainerView.extend
...
addChildView: ->
@get("content").pushObject(App.MyChildView.create(...))
Приведенный выше пример будет толкать новый взгляд на стек (с учетом мнений, которые будут создаваться динамически)
Однако эти представления могут (могут?) Не иметь подходящего контейнера (и других свойств?), Установленного за счет создания с помощью App.MyChildView.create()
. Это особенно верно в тех случаях, когда мы делаем частичную интеграцию Ember в существующее приложение.
Способ создания этих взглядов, а не будет:
App.__container__.lookupFactory("view:my_child").create()
В этом случае все было бы нормально.
Существуют дополнительные прецеденты для создания контроллеров экземпляров вне контекста маршрутизатора .. но идея такая же.
Можете ли вы предоставить код, чтобы понять ваш случай использования – Edu
Если вы используете фабрику поиска, чтобы получить класс, почему бы вам просто не использовать имя класса в первую очередь? App.FooController так же хорош, как App .__ container __. LookupFactory ('controller: foo') и кажется гораздо более идиоматичным. – Kingpin2k