Есть ли событие, которое срабатывает после обновления DOM в результате наблюдаемого свойства?

Есть ли событие, которое запускается после обновления DOM в результате изменения наблюдаемого свойства?

В частности, мне нужно изменить свойство scrollTop контейнера, чтобы отображать новый контент по мере его добавления. Теперь я должен использовать тайм-аут, чтобы дождаться обновления DOM, прежде чем устанавливать для scrollTop новое значение scrollHeight.


person w.brian    schedule 08.10.2013    source источник


Ответы (1)


Спасибо за вопрос. Насколько я понимаю, изменения распространяются через модели и DOM асинхронно. Неясно, есть ли одно событие «хорошо, буквально все на всем пути обновлено» (я могу ошибаться).

Тем не менее, я использовал наблюдателей за мутациями, чтобы знать, когда что-то меняется в моей DOM. Если вы можете отследить изменение (или изменения) в определенном месте DOM, попробуйте Mutation Observers: https://github.com/sethladd/dart-polymer-dart-examples/tree/master/web/mutation_observers

Вот пример:

  MutationObserver observer = new MutationObserver(_onMutation);
    observer.observe(getShadowRoot('my-element').query('#timestamps'), childList: true, subtree: true);


  // Bindings, like repeat, happen asynchronously. To be notified
  // when the shadow root's tree is modified, use a MutationObserver.

  _onMutation(List<MutationRecord> mutations, MutationObserver observer) {
    print('${mutations.length} mutations occurred, the first to ${mutations[0].target}');
  }
person Seth Ladd    schedule 08.10.2013