2017-11-15 1 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 번 해고되었습니다. 템플릿을 반복 할 때마다 행 수가 적 으면 아무 문제가 없지만 행 수가 늘어 나면 문제가 될 수 있습니다. – Boyak

+0

이상 하네! 나는 그것이 한 번 있어야한다고 생각한다. 나는 또한 여기 plunker [여기] (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) 
} 

이 취성 고려 될 수있다 - dom-change 이벤트가 디 바운서 두 번 발사됩니다 더 100ms보다의 지속 기간 사이에 발생합니다. 실제적인 목적을 위해 DOM 변경이 완료되는 데 오래 걸릴 것 같지 않습니다.

+1

'debounce'에 흥미 롭습니다! 감사. –

관련 문제