Ответ 1
Когда у вас есть шаблоны в разных файлах, вы должны их загрузить и скомпилировать, поскольку EmberJS не обнаруживает файлы. Есть несколько способов сделать это.
1) Загрузите их в Ember.TEMPLATES
:
Ember загружает шаблоны и подталкивает их к объекту Ember.TEMPLATES. он сохраняет содержимое шаблонов с помощью клавиши small name
согласно Соглашениям об именах EmberJS. Поэтому мы сами можем нажать шаблоны после их компиляции.
Например: если у вас есть шаблон с именем "post", загрузите файл post.hbs
через запрос AJAX, затем установите
// "data" is html content returned from Ajax request
Ember.TEMPLATES['post'] = Ember.Handlebars.compile(data)
Итак, теперь вы можете получить доступ к шаблону напрямую как
{{partial 'post'}}
в дескрипторах или в качестве templateName
для любых классов вида.
App.OtherView = Ember.View.extend({
templateName: 'post'
});
Таким образом, вам может потребоваться загрузить все файлы HBS через запрос AJAX и скомпилировать их перед загрузкой приложения. Это большие накладные расходы для приложения.
Чтобы облегчить это, мы можем предварительно скомпилировать все шаблоны и сохранить их как JS (который фактически нажимает их на объект Ember.TEMPLATES) и просто загружать этот JS. Это может быть достигнуто с помощью плагинов ember-templates, который также доступен в качестве задания grunt grunt-ember-templates.
2). Второй способ - создать объект представления и установить скомпилированный код в шаблон каждого представления после запроса AJAX. Текстовый плагин requirejs
поможет вам это сделать.
Как и сейчас, люди Ember предлагают не создавать объект вида, если это необходимо, я предлагаю вам следовать первому пути. Предварительно скомпилированный - лучший вариант, который уменьшает массу работы при создании шаблона.
UPDATE. Существуют некоторые инструменты для создания проектов, которые занимаются составлением шаблонов рулей. Yeoman и Ember-Cli - это те, которые вы можете посмотреть один раз.