Backbone.jsアプリのテンプレートツールとしてHandlebars.jsを使用しています。ビューのレンダリング関数は通常、次のようになります。
var source = $("#round").html();
var template = Handlebars.compile(source);
var context = JSON.parse(JSON.stringify(this.model));
var html = template(context);
$(this.el).html(html);
return this;
上記は、次のコード(これは上記のコードを呼び出すコードです)を介してメインアプリビューに追加されます。
$('div#round-container', this.el).append(roundView.render().el);
私のHandlebarsテンプレートはすべてのスタイリングとレイアウトを処理するので、ビューの「el」要素は空白のままにします。 Backbone.jsは、Handlebarsテンプレートの周囲に周囲のdivタグを自動的に追加します。これは、「el」要素が空白であるためだと思います。周囲のdivタグの追加を防ぐ方法はありますか?ありがとう!
何が起こっているのかというと、_this.el
_はあなたが明示的に設定したことがないため、その場で作成されます。 2つのオプションがあります。
作成する要素をtagName
、className
、またはid
で指定し、バックボーンに作成させる必要があります。
render
で、_this.el
_をハンドルバーテンプレートのコンテンツに設定する必要があります。したがって、this.el = $(template(context))
があります。
ドキュメントには拡張された説明があります- http://documentcloud.github.com/backbone/#View-el
もう1つの簡単な方法は、代わりにレンダリングされた要素の子ノードを追加することです。
$('div#round-container', this.el).append(roundView.render().el.childNodes);
または、レンダリングされた要素のhtmlを追加します。例:
$('div#round-container', this.el).append(roundView.render().el.html());