2013-03-29 8 views
16

Viewsレンダリング機能を再実装せずにBackbone.Marionette拡張子のHandlebars.jsを使用することはできますか? Marionetteは、Backbone.jsをアンダースコアテンプレートエンジンで使用するというコンベンションに頼っているようです。しかしハンドルバーのアプローチが本当に好きなので、ハンドルバーでマリオネットのハイレベルツールを利用できるかどうかを尋ねています。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"}) 
}); 

マリオネットのデフォルトRenderertemplate属性が関数であることを検出し、それに応じてそれを呼び出します。

は、この場合についても、公式ドキュメントを参照してください: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

現在の2つの回答は、キャッシュを悪用しません。この要点を使用するinstead.

3

ここでも、プリコンパイルされたテンプレートを使用することができます。

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

このようにして、編集役割をマリオネットから削除することができます。

関連する問題