2016-04-05 9 views
1

ソートが完了したらどうなるか?ポリマーdom-repeatソート済みイベント

ポリマーテンプレートの例:

<template is="dom-repeat" items="{{list}}" sort="{{_sort(sortKey, sortAsc)}}" > <!-- change of _sort() args triggers sorting --> 
     {{item}} 
    </template> 

_sort()メソッドは、場合のいずれかSORTKEY又はsortAsc変更呼び出されます。 リストが適切にソートされて表示されます。 sortkeyまたはsortAscが変更されたとき、これはソート前に行われるので、役に立たないと私は見ているオブザーバーがいます。

オブザーバのリストはソート後に起動しません。 ソートが完了したら、ソートされたリストを処理することができます。

ご協力いただきありがとうございます。

答えて

0

ソートおよび/またはフィルタ機能が呼び出された後で、レンダリングの最後に発生するdom-changeイベントを聴くことができます。

ソート機能自体に関する特定のイベントはありません。私はそれが役に立たないので、何の「ソート仕上げ」イベントが存在しないことを学んだいくつかの研究の後

https://github.com/Polymer/polymer/blob/master/src/lib/template/dom-repeat.html#L461

+1

あなたが提案したように私はdom-changeイベントを配線しました。それはリストがソートされた後に(良い)発火しますが、私の場合は34回(悪い)発生します。 (テストリストには57個のアイテムがありました) ソートにdom-repeatテンプレートを使用することはできません。 私はJavaScriptでリストをソートし、ソートリストを使用し、dom-repeat templatを更新する必要があります。 –

+0

ええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ、 :) –

+0

私はpolymer.slack.comでこの質問をして、デバウンスの使用を提案しました。dom-changeは何回も起動を止めましたが、任意のタイムアウトを設定するという考え方は、setTimeout()を使ったハッキン​​グに似ています。 –

0

。ここ は、ポリマー中に何が起こっているかである。

  1. ユーザーインターフェースは、ここでのソートがテンプレートにのみ表示されたリストに影響を与えます<template is="dom-repeat" sort="{{_sort(sortKey)}}">によって処理されます。リストのソースであるJavaScript配列は変更されずにソートされません。
  2. JavaScriptコードでは、リストにArray.sort()メソッドを実行する必要があるため、リストは実際にソートされます。 {{sortKey}}の値を見てJavaScriptソートを開始すると、並べ替えられたリストをさらに処理できます。

これは重複のように見えますが、これは私が今までに見つけることができる唯一の解決策です。


ポリマー岩石!

AngularJSで元々作成されたアプリケーションを書き直しています。 ng-repeatは1000アイテムのリストをレンダリングするのに42秒かかりますが、Polymerはそれを数秒で実行します!

関連する問題