追加リンクが必要なため、これにはCompositeViewを使用します。
実際のリストのプレースホルダーを含むテンプレートを設定し、追加リンクとその他の必要なすべてのビットも含めます。次にappendHtml
、複合ビューのメソッドを変更して、実際のアイテムを正しい場所に配置します。
たとえば、次のようなテンプレートを使用してください。
<script id="light-saber-menu-template" type="text/html">
<h4>My Lightsabers</h4>
<ul id="light-sabers">
<li class="divider"></li>
<li><a href="#">Add A Lightsaber</a></li>
<ul>
</script>
<script id="light-saber-menu-item-view" type="text/html">
<%= name %>
</script>
この例ではdivider
、アイテムを配置する場所としてulを使用し、仕切りの前に挿入します。
MenuItem = Backbone.Marionette.ItemView.extend({
template: "#light-saber-menu-item-template",
tagName: "li"
});
MenuView = Backbone.Marionette.CompositeView.extend({
template: "#light-saber-menu-template",
itemView: MenuItem,
appendHtml: function(cv, iv){
var $divider = cv.$(".divider");
$divider.before(iv.el);
}
});
myLightSabers = new LightSaberCollection(... data ...);
menu = new MenuView({
collection: myLightSabers
});
menu.render();
これにより、<ul>
期待するアイテムでが生成されます。
<div>
<h4>My Lightsabers</h4>
<ul>
<li>Blue</li>
<li>Green</li>
<li>Red</li>
<li class="divider"></li>
<li><a href="#">Add A Lightsaber</a></li>
</ul>
<div>
CompositeViewの使用に関するその他の例については、次のブログ投稿を参照してください:http: //lostechies.com/derickbailey/2012/04/05/composite-views-tree-structures-tables-and-more/