1

私は Web サイトの Sencha Touch 2 バージョンを作成するプロジェクトに取り組んでおり、取得したすべてのリソースは Web サイト自体です。

私の問題は、HTML で検索結果のリストがあり、これらをリストに動的に追加したい (たとえば、すべての要素をリスト内の要素にマップする) ことです。

これを処理する方法について何かアイデアはありますか?

リスト内の 1 つの要素の HTML は次のようになります。

<li>
    <p><input type="checkbox" name="chk" value="FF032A" />
        <a href="/files/documentPage.html">Title</a>
    </p>
    <div class="long">
        <p>CATEGORY DESCRIPTION</p>
        <p>3/12/2012</p>
    </div>
</li>
4

1 に答える 1

2

Ext.DomQuery を使用して、(要素セレクターを使用して) 関連するデータを体系的に抽出し、それを JSON 配列に組み込みます。次に、生データ (JSON 形式) を使用してストアにインポートし、リストにフィードします。

たとえば、サンプル コードを 3 回複製しました (したがって、抽出するリスト項目は 3 つです)。次に、次のように、一致するセレクターで Ext.DomQuery を使用しました。

var listItems = Ext.DomQuery.select('li > div[class="long"]');

これで、3 つのリスト要素の配列ができました。次に、各リスト要素の内部要素からオブジェクトを構築する必要があります。これを行うには、新しい配列でネイティブ マップ関数を使用します。これは、配列内の各項目を受け取り、データ オブジェクトを返します。データ オブジェクトは、

item 要素の下に子番号を使用する要素。それに応じてキー名を更新してください。

var finalArray = listItems.map(function(item){
    var itemEl = Ext.get(item);
    return {
        description: itemEl.child('p:nth-child(1)').getHtml(),
        date: itemEl.child('p:nth-child(2)').getHtml()
    };
});

次に、この新しい配列を簡単に JSON 文字列に変換できます。次に例を示します。

var finalString = JSON.stringify(finalArray);

静的データが必要な場合は、それをコピーして Sencha Touch コードに貼り付けるか、JSON データで実行できる他のことを行うことができます。

于 2012-12-05T22:25:51.377 に答える