マリオネットテンプレートシステムでリストビューを表示する例を教えてください。基本的に、私はマリオネットテンプレートを持っており、そのテンプレートに基づいてテーブルリストを作成しています。
バックボーンマリオネットを使用してテーブル行のリストを作成するには、次の5つのことを定義する必要があります。
CollectionView
ItemView
ItemView
のテンプレート次のデータがあるとします。
var stooges = [{ name: 'moe', age: 44, userid: 1},
{ name: 'larry', age: 44, userid: 2},
{ name: 'curly', age: 44, userid: 3}];
次のデータの場合、モデルが必要です。
var StoogeModel = Backbone.Model.extend({});
ここで、データやidAttribute
などの他のプロパティに適切なデフォルトを設定できます。モデルをカスタマイズする方法については、たくさんの参考資料があります。コレクションは、少なくともstoogeModel
を取る必要があります。
var StoogeCollection = Backbone.Collection.extend({
model: StoogeModel
});
コレクションを繰り返してテーブルにレンダリングするために必要なのは、CollectionView
とItemView
だけです。
var StoogesCollectionView = Backbone.Marionette.CollectionView.extend({
tagName: "table",
childView: StoogeItemView
});
すべてのCollectionViews
には少なくともchildView
が必要です。これはItemView
(以下で定義)であり、各行のhtmlを作成する機能を導出するために使用します。 collection
は、各行に入力されるモデルを保持するコレクションです。 a stoogesCollectionView
をインスタンス化するときに、このコレクションを渡します。 tagName
プロパティは、子をtable
タグにカプセル化するようにBackboneに指示します。
var StoogeItemView = Backbone.Marionette.ItemView.extend({
tagName: "tr",
template: '#stooge-template'
});
<script type="text/template" id="stooge-template">
<td id="name"><%= name %></td>
<td id="age"><%= age%></td>
<td id="userid"><%= userid%></td>
</script>
すべてのItemViews
には、HTMLドキュメントで定義するテンプレートが必要です。ここでは#stooge-template
です。 ItemView
がコレクションの子である場合、そのモデルを定義する必要はありません。それは親CollectionView
によって提供されます。各子StoogeItemView
によってレンダリングされたHTMLはtr
タグによってカプセル化されます。これは、コレクションビューの各子の行が必要だからです。
ItemView
から、行列のclick
やfocus
のように、「行」レベルでイベントを処理できます。渡されたモデルへの変更を処理することもできます。さらに、ItemView
から、テンプレートでのデータの表示方法を操作できるヘルパーを渡すことを決定できます。
これで、モデル、コレクション、コレクションビュー、子アイテムビュー、およびアイテムビューテンプレートが定義されました。次に、これらすべての部品を接続します。
ストゥージの配列をコレクションのコンストラクターに渡します。
var myStooges = new StoogeCollection(stooges);
これらはモデルに成形され、コレクションをロードします。
CollectionView
を改訂するロードしたコレクションをコレクションビューに渡します。
var myStoogesView = new StoogesCollectionView({ collection: myStooges });
すべてのMarionetteビューは、render
メソッドでパッケージ化されています。私たちの場合、
myStoogesView.render();
データセット内のname
、age
、およびuserid
フィールドにそれぞれ列を持つ3つの<table>
要素を持つ<tr>
を作成します。結果のHTMLをDOMに挿入するには、ビューのel
プロパティを使用するだけです。簡単にするために、ビューをボディに直接挿入できます
document.body.appendChild(myStoogesView.el);
またはjQueryを使用する:
$(document.body).append(myStoogesView.el);
私たちが議論し始めさえしなかった多くの機能があります。 docs を読んでください!そして、多くの多くのチュートリアルをチェックしてください。この簡単な紹介がお役に立てば幸いです。