2013-03-29 2 views
16

Возможно ли использовать Handlebars.js с расширением Backbone.Marionette без переопределения функции рендеринга Views? Кажется, что Marionette полагается на соглашение, в котором вы используете Backbone.js с шаблоном шаблонов подчеркивания. Но мне очень нравится подход к рулю, поэтому я спрашиваю, могу ли я использовать инструменты Marionette с ручками высокого уровня.Использование Handlebars.js с Backbone.Marionette

+3

Там кое-что о марионеток и рули интеграции в вики марионетка, проверьте это: https://github.com/marionettejs/backbone.marionette/wiki/Using-handlebars-templates-with-marionette – Ingro

+1

проверить эту ссылку: [ссылка] [1] надеюсь, что это помогает [1]: http://stackoverflow.com/questions/11501516/backbone-marionette-i18n-handlebars/11505302#11505302 – danikoren

ответ

24

Простой способ использования ручек с марионеткой - это просто определить template в каждом представлении в виде предварительно скомпилированной функции шаблонов ручек. Например:

var MyView = Backbone.Marionette.ItemView.extend({ 
    template: Handlebars.compile("Hello, {{name}}"), 
    model: new Backbone.Model({name: "Steve"}) 
}); 

по умолчанию марионетки в Renderer обнаружит, что атрибут template является функцией, и будет называть его соответствующим образом.

Смотрите также официальную документацию об этом случае: https://github.com/marionettejs/backbone.marionette/wiki/Using-handlebars-templates-with-marionette

и другом Q/A с requirejs + марионетки + Рули прекомпилировано: Using precompiled handlebars templates with Marionette

6

@brettjonesdev правильно, но один другим дополнением здесь, что я нашел хорошо работает:

var MyView = Backbone.Marionette.ItemView.extend({ 
    template: Handlebars.compile($("#assign-products-main-view").html()), 
    model: new Backbone.Model({name: "Steve"}) 
}); 

Это помогает при поиске DOM.

2

Нынешние два ответа не используют кеширование. Используйте этот текст instead.

3

Мы также можем использовать предварительно скомпилированные шаблоны здесь.

var MyView = Backbone.Marionette.ItemView.extend({ 
template: Handlebars.templates['filename'], 
model: new Backbone.Model({name: "Steve"}) 
}); 

Таким образом, мы можем удалить роль компиляции из Marionette.

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