2015-11-26 3 views
1

Я вполне уверен, что ответ на мой вопрос где-то в некоторых документах, я прочитал много страниц, на официальных и неофициальных сайтах, много связанных вопросов на SO, но мой google-fu кажется недостаточно развитым, чтобы помочь мне найти ответ, И вот я здесь.Как добавить шаблоны в подкаталоги в Ember?

В моей команде мы используем Ember-cli для некоторых веб-приложений. У нас есть классическая папка для приложений/шаблонов, в которую мы помещаем .hbs каждого «контроллера», который у нас есть. В тех шаблонах дескрипторов мы используем компоненты, которые находятся в приложении/шаблонах/компонентах.

Мы недавно достигли точки, где приложение/шаблоны/компоненты слишком большие. Я думал, что было бы неплохо разделить их на подкаталоги, например.

  • приложение/шаблоны/Product1, содержащего специфический к product1 компонентам + базовый Product1 руль (тот, который вызывается в приложении/router.js "HBS Controler" А).
  • приложение/шаблоны/product2, содержащие компоненты, специфичные для продукта2, + базовый маркер product2 (тот, который вызван в app/router.js, «hbs» контроллера).

Но когда я делаю это, он не работает и отображает белую страницу:

  • Если я перенесу «HBS Controler» из приложения/шаблонов для приложений/шаблоны/product1, у меня есть целая белая страница с ничем не загруженной.
  • Если я перемещаю компонент из приложения/шаблонов/компонентов в приложение/templates/product1, отображается «hbs» контроллера, но у меня есть пустой блок, где должен быть мой компонент.

Я не знаю, если я должен настроить уголек для того, чтобы рекурсивно искать рулей в папке приложения/шаблонов, и/или если я должен изменить router.js, и как назвать мои компоненты так что ember знает, где они.

Спасибо заранее,

Benjamin

ответ

2

Override templateName свойство.

App.YourStuffComponent = Ember.Component.extend({ 
    templateName: 'components/intoDir/your-stuff' 
}); 

Демо: http://emberjs.jsbin.com/jenafa/2/edit?html,js,output

+0

Я создал папку продукта-а в приложение/компонент, и кладу JS внутри: 'приложение/компоненты/продукт-а/некоторые-component.js'. Я сделал то же самое для своего шаблона: 'app/templates/components/product-a/some-component.hbs' Наконец, в app.js Я добавил: ' App.SomeComponent = Ember.Component.extend ({templateName : 'components/product-a/SomeComponent'}); 'но это не сработало. Я также пробовал: 'App.SomeComponent = Ember.Component.extend ({templateName: 'components/product-a/some-component.hbs'});' same error: white page and Assertion failed: помощник с именем 'some -компонент 'не удалось найти. Что я делаю неправильно? – Benjamin

+0

Компоненты в подпапке должны работать нормально. Попробуйте имя папки без косой черты. Также вам нужен Ember 1.9.0+. Какую версию ты используешь? См. Комментарий rwjblue: https://github.com/ember-cli/ember-cli/issues/2570 –

+0

Кроме того, если это то, что вы действительно хотите, тогда ваш вопрос уже был задан: http://stackoverflow.com/questions/29038704/ember-components-in-in-sub –

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