1

これは私の最初のWindows8アプリです...私はそれを使用する前にこの最後の問題を抱えています。:)

レイアウトがGridLayoutに設定されたListViewがあります。メインページが読み込まれると、アプリはListViewのデータソースに50個のアイテムを追加します。ListViewのレンダリングには5〜6秒かかります。

注意:アイテムがdataSourceに追加されてから5〜6秒後。XHR / AJAX呼び出し+読み込みには200〜300ミリ秒かかります。


これは非常に奇妙に思えます。以下にいくつかのコードを追加しました:

JS-ListViewとデータソースの定義

this.categoryProducts = new WinJS.Binding.List();
this.productListview = element.querySelector('#category-products-listview').winControl;
this.productListview.itemTemplate = element.querySelector('#product-template');
this.productListview.itemDataSource = this.categoryProducts.dataSource;
this.productListview.oniteminvoked = this._product_clicked.bind(this);

JS-データソースへのアイテムの追加

_ref = data.products;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
   product = _ref[_i];
   _results.push(Category.categoryProducts.push(product));
}

HTML:

<div id="product-template" data-win-control="WinJS.Binding.Template">
    <div class="item product">
        <img class="item-image" src="/images/shopping-bag.png" data-win-bind="src: thumbnail; alt: name" onError="this.src='/images/shopping-bag.png';" />

        <div class="item-details" >
            <div class="item-details-top">
                <h4 class="item-title" data-win-bind="textContent: name"></h4>

            </div>
            <div class="item-details-bottom">
                <div  class="price"> <span style="font-weight:bold;">$</span> <span data-win-bind="textContent: price"></span></div> 
                <div class="reviews" ><span class="icon-comments"></span> <span data-win-bind="textContent: reviews_count"></span></div> 
                <div class="stars" > <span class="icon-star"></span><span class="icon-star"></span><span class="icon-star"></span><span class="icon-star"></span><span class="icon-star"></span>  <span data-win-bind="textContent: stars"></span></div>
            </div>
        </div>
    </div>
</div>

これは、レンダリングされたときのListViewの外観です。

ここに画像の説明を入力してください


アイデアの人はいますか?

4

1 に答える 1

2

ListViewを設定する前または後に、データソースにアイテムを追加しますか?これだけではありませんが、自分のやり方でアイテムを追加することで、多くの解約率が得られているのではないかと考えています。アイテムをプルダウンして新しいバインディングリストを作成してから、dataSourceを設定します。

最小限の遅延で数百のアイテムをlistViewにロードしました。

  1. 空のリストでListViewを設定する
  2. Webからデータをプルする
  3. Web呼び出しの結果を使用して新しいバインディングリストを作成する
  4. 新しいリストからの新しいデータソースでListViewを更新します

あなたのマイレージは異なる場合があります...

于 2012-12-06T22:33:32.267 に答える