1

「ドロップダウン」リストにバインドしたい静的データの長いリスト (この場合は、国と州/県のリスト) があります。

これは静的データであるため、モデルとコレクションの使用はやり過ぎのように見えるだけでなく、私の実験では、これほど多くのデータを使用すると非常に遅くなります。

私がやりたいのは、モデルやコレクションをいじる必要のない単純なテンプレート バインディングです。オブジェクトの配列を取得してループし、必要な XML をビューにバインドするだけです。

非常に多くの JS テンプレート エンジンがあるという事実を考えると、これは Titanium で可能であると思いましたか? 私の検索では、何も役に立ちませんでした。

4

2 に答える 2

0

ItemTemplate の適切な構成で listView を使用するだけで、準備完了です。

于 2013-09-21T21:36:32.947 に答える
0

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

于 2014-01-13T18:37:01.773 に答える