2013-03-29 84 views
16

是否有可能使用Handlebars.js與Backbone.Marionette擴展名而無需重新實現視圖渲染功能?看起來,木偶依賴於你使用Backbone.js的約定,並帶有下劃線模板引擎。但我真的很喜歡車把的方式,所以我問我是否可以使用帶把手的木偶的高級工具。使用Handlebars.js與Backbone.Marionette

+3

有一些關於木偶和把手整合木偶的wiki,檢查出來: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

使用Handlebars和Marionette的簡單方法是在每個視圖中將template定義爲預編譯的Handlebars模板函數。例如:

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

與requirejs的其它Q/A +木偶+把手預編譯: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"}) 
}); 

這樣我們就可以從木偶去除編輯角色了。