2016-05-18 5 views
1

Я работаю над модулем, который должен регистрировать компоненты с помощью Ember, Angular, React и т. Д. В зависимости от того, что загружено на страницу.Ember - Динамическое создание компонента

С Реагировать я могу просто сделать

if (window.React) { 
    React.createClass(... 

Но как я могу сделать то же самое с Эмбер? Я ищу что-то вроде:

if (window.Ember) { 
    Ember.registerComponent('my-component-name', Ember.Component.extend({ 
    ... 
    })); 
} 

Возможно ли это? Принимая во внимание У меня нет доступа к Ember App на странице.

ответ

0

Это хороший вопрос. Чтобы разбить его немного, мы хотим динамически:

  1. Создайте подкласс Ember.Component.
  2. Скомпилируйте этот шаблон компонента.
  3. Зарегистрируйте этот компонент в глобальном пространстве имен приложения.

Ответ на вопрос 1. уже на ваш вопрос (Ember.Component.extend). 2. ответили в другом месте: here и here, например.

Сверху моей головы я не уверен, что я должен ответить на 3-й вопрос. Я бы рекомендовал использовать register на контейнере для инъекций на основе Ember или искать именно для этой цели.


Предупреждаю, что это на самом деле не на Ember «счастливого пути» - по причинам производительности, Ember (и Glimmer) в основном сосредоточены на скомпилированных шаблонов.

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