2014-08-07 5 views
0

В Ember вы можете вводить объекты в представление, используя инициализатор следующим образом (Ember-CLI синтаксис):Инъекции в Эмбер просмотры

export default { 
    name: 'sayHello', 

    initialize: function(container, app) { 
    var thing = function() { 
     return 'Hello'; 
    }; 

    app.register('sayHello:main', sayHello, { instantiate: false }); 
    app.inject('view', 'sayHello', 'sayHello:main'); 
    } 
}; 

Это впрыскивает метод в все виды, включая линию-тос, входы, элементы списка в виде коллекции и т. д. Это похоже на то, что это помешало бы производительности приложения, если бы впрыскиваемая вещь была существенно по размеру. Во многих ситуациях вы просто хотите что-то вставить в представление или контроллер маршрута. То, что я имею в виду под этим, - это представление, которое Эмбер автоматически связывает с текущим маршрутом.

Вопрос: Есть ли способ, чтобы ввести объекты в только мнения, характерные для конкретных маршрутов, а не в ссылке-TOS, входы и т.д., и не инъекционные методы во все взгляды заметно тормозит производительность приложения?

ответ

0

Руководство уголек говорит:

Инъекции могут также быть сделаны на конкретном заводе, используя его полное имя:

application.inject('route:index', 'logger', 'logger:main'); 

- http://emberjs.com/guides/understanding-ember/dependency-injection-and-service-lookup/

Так вопрос есть - на какой фабрике вы хотите нацелиться.

Я не уверен, есть ли завод, который включает в себя все пользовательские представления, но исключает все представления структуры. Вероятно, вы должны настроить таргетинг на отдельные виды с помощью view:application и т. Д.

Опция может иметь вид прокси, который расширяет Ember.View и из которого вы расширяете все виды приложений.

+0

Спасибо, Грег. К сожалению, это не масштабируемый вариант при работе с 40-50 маршрутами. –

Смежные вопросы