2017-11-15 6 views
0

私は長い検索の後でこれを見つけられなかったので、簡単な質問があります。ポリマー - 末端結合事象時にdom-反復するか?

シナリオは:

コンポーネントがロードされ、私はAJAX呼び出しがAPIからデータを取得するために作ります。コール終了後、私はdom-repeatのために使用されるプロパティにデータを入れます。 dom-repeatがレンダリングを終了した後、私はその中の要素に対していくつかの操作を行いたいと思います。 Read()は、AJAX呼び出しが終了する前でも呼び出されます。それを処理する他の方法はありますか?

答えて

2

dom-repeat DOMツリーを更新した後にdom-changeイベントを発生させます。

だから、

<template is='dom-repeat' items='[[items]]' on-dom-change='doSomething'> 
    ... 
</template> 

のようなものdocumentで参照を行うことができます。

+0

それは動作します...しかし、それは(私の場合は)50回発砲しました。テンプレートの1回の反復ごとに。行数が少ないときは問題ありませんが、行数が増えると問題になることがあります。 – Boyak

+0

それは変です!私はそれが一度(確実ではない)であるべきだと思います。私はまた、プランナー[ここ](https://plnkr.co/edit/P3B7hxMSihqTVh7hK0lt?p=preview)を作成します。反復ごとに発火しません。 –

2

dom-changeイベントとdebounceを組み合わせて、あなたが望むものを得ることができます。

<template is='dom-repeat' items='[[items]]' on-dom-change='_handleDomChangeEvent'> 
... 
</template> 

... 

_handleDomChangeEvent: function() { 
    this.debounce('domEndEvent', function() { 
    // dom-repeat has finished rendering 
    }, 100) 
} 

これは脆い考えることができる - 以上100msデバウンサのスパン間dom-changeイベント火災が二回発動する場合。しかし、実用的な目的のために、DOMの変更が完了するまでにそれほど時間がかからないことはありません。

+1

'debounce'に興味があります!ありがとう。 –

関連する問題