W programie Polymer szablon pomocniczy dom-repeat
emituje zdarzenie dom-change
za każdym razem, gdy nadpisuje wynik iteracji w DOM. Czy istnieje sposób dla mnie, aby powiedzieć, kiedy ALL z iteracji są kompletne?Jak stwierdzić, kiedy powtarzane są powtórzenia DOM Elementy stemplowania
Odpowiedz
Być może ten prosty przykład pomoże wyjaśnić zachowanie i rozszerzyć komentarze.
<dom-module id="change-tester">
<template>
<h1>Change Tester</h1>
<ul>
<template id="template" is="dom-repeat" items="{{content}}">
<li>{{item}}</li>
</template>
</ul>
<button on-click="more">Add more</button>
</template>
</dom-module>
<script>
Polymer({
is: 'change-tester',
properties: {
content: {
type: Array,
value: function(){ return ["one", "two", "three"]}
}
},
ready: function(){
this.$.template.addEventListener("dom-change", function(event){
console.log(event);
});
},
more: function(){
this.push("content", "four");
this.push("content", "five");
}
});
</script>
Ilekroć dom-change
jest zwolniony, loguję zdarzenie do konsoli, więc otworzyć narzędzia dev i rzucić okiem. Początkowo dom-repeat
ma trzy iteracje i zapełni dom trzema elementami. Zauważ, że zostanie wywołane tylko jedno zdarzenie, a mianowicie po dodaniu wszystkich trzech elementów. Kliknięcie przycisku powoduje dodanie dwóch kolejnych elementów do treści powtórzenia. Ponieważ aktualizacje dom-repeat
są asynchronicznie aktualizowane, te dwa elementy są ponownie obsługiwane za jednym razem i powodują tylko jedno zdarzenie.
Tak więc wydarzenie dom-change
jest tak naprawdę wydarzeniem finałowym, którego szukasz. Ponownie wystrzeli tylko, jeśli manipulujesz przedmiotami, które są do niego przywiązane.
Aby uzyskać dostęp do dynamicznie utworzony węzeł (jak powtórzenia szablonu) zastosowanie:...
ten $$ ('# id')
zamiast tego $ id
Na przykład, jeśli id szablon jest "szablon" należy użyć
to. $$ ('# szablon')
ready: function(){
this.$$('#template').addEventListener("dom-change", function(event){
console.log(event);
});
},
- 1. Jakie elementy DOM nie są elementami HTML?
- 2. Jak stwierdzić, kiedy obiekt AudioTrack zakończył odtwarzanie?
- 3. Jak stwierdzić, kiedy gniazdo zostało odłączone?
- 4. Android - Jak stwierdzić, kiedy MediaPlayer buforuje
- 5. Jak usunąć elementy DOM bez wycieków pamięci?
- 6. WPF - Jak wykrywać, kiedy dodawane są nowe elementy potomne?
- 7. Jak i kiedy są usuwane elementy statyczne C#?
- 8. powtarzane setTimeout() z 1 milisek
- 9. Czy istnieje sposób sprawdzenia, czy dwa elementy DOM są równe?
- 10. Kątowe narzędzie powtórzenia ng
- 11. phantomjs/casperjs count Elementy DOM
- 12. Jak rozpoznać, kiedy DOM został zmieniony?
- 13. Python - ułatwiają powtarzane if
- 14. Jak stwierdzić, kiedy przycisk Wstecz jest naciśnięty w UINavigationControllerStack
- 15. Jak mogę stwierdzić, kiedy zakończyła się animacja UITableView?
- 16. Jak stwierdzić, kiedy układ sił D3 został zatrzymany?
- 17. Jak stwierdzić, kiedy przeglądarka jest już zajęta, ładowanie
- 18. Jakie są poziomy DOM?
- 19. Jak mogę stwierdzić, jakie zdarzenia są wywoływane przez GXT?
- 20. Jak określić, kiedy opcje ng zakończyły aktualizację DOM?
- 21. Jak mogę sprawdzić, czy dwa elementy DOM zawinięte w jQuery są takie same?
- 22. Kiedy inicjalizowane są obiekty pakietu?
- 23. Które elementy DOM nie mogą zaakceptować identyfikatora?
- 24. Angular js nie aktualizuje dom kiedy oczekiwano
- 25. Od czasu do czasu wiadomości Django są powtarzane dla żądań (tj. Nie są usuwane).
- 26. HTML jak określić, które elementy są widoczne?
- 27. Jak dodać elementy z obsługą Angular do DOM?
- 28. Jak uzyskać elementy DOM według klasy, identyfikatora, selektorów i właściwości?
- 29. Kątowy: jak tymczasowo podświetlić elementy DOM, które właśnie się zmieniły?
- 30. Jak powiązać istniejące elementy DOM z obiektem KnockoutJS viewModel
Czy można to ustalić, patrząc na dane w zdarzeniu dom change - wiedząc, który element danych powinien być ostatni, a następnie sprawdzając? Być może nie jest to jednak idealne rozwiązanie. – newfivefour
https://github.com/Polymer/polymer/blob/master/src/lib/template/dom-repeat.html @ 348 uruchamia zdarzenie po zakończeniu renderowania() –
, jak Robert mówi powyżej 'dom -change 'event jest wywoływane, gdy renderowanie szablonu' dom-repeat' jest zakończone. Powinieneś wtedy móc dodać do szablonu następujący wiersz kodu, który wykona funkcję, gdy to zdarzenie zostanie uruchomione: '' –