Alloy でのデータ バインディングは、Backbone モデルとコレクション オブジェクトに密接に結合されています。Alloy ビュー XML ファイル内の要素で属性を宣言するdataCollection
と、コード ジェネレーターは、その属性によって指定されたコレクションを実行するループを作成し、コレクション内のモデルごとに新しいビュー オブジェクトを構築し、ビューの適切なプロパティを設定します。およびそのサブビュー。Resources
プロジェクトのフォルダーの下に生成されたコードを開くと、これがどのように機能するかを確認できます。
バックボーン コレクションのループは、単純な配列のループよりも遅くはないはずです。そのため、サンプル コードとドキュメントに示されているように、持続性アダプターの 1 つを使用してコレクションを読み込んでいたため、パフォーマンスが低下したと推測されます。ただし、データが実行時に変更されない場合は、プレーン バックボーン コレクションを作成し、そのコレクションのreset()
メソッドを呼び出してデータの一括セットを実行することができます。これにより、永続化アダプターを介したデータの取得に関連するすべてのオーバーヘッドを回避できます。以下は、これがどのように行われるかを示すAlloy サンプル アプリからの抜粋です。
// alloy.js
Alloy.Collections.heroes = new Backbone.Collection();
Alloy.Collections.heroes.reset([
{ name: 'Ironman' },
{ name: 'Superman' },
{ name: 'Thor' },
{ name: 'Captain America' },
{ name: 'Hulk' },
{ name: 'Green Lantern' },
{ name: 'Punisher' },
{ name: 'Spiderman' },
{ name: 'Wolverine' },
{ name: 'Cyclops' }
]);
コレクションが作成されると、ビューにバインドできます。
<TableView dataCollection="heroes">
<TableViewRow title="{name}"/>
</TableView>
さまざまなコレクション ビューにバインドする方法を示す例については、Github の Alloy リポジトリをご覧ください: https://github.com/appcelerator/alloy。