如何知道何时完成排序?
聚合物模板示例:
当 sortKey 或 sortAsc 更改时,将调用<template is="dom-repeat" items="{{list}}" sort="{{_sort(sortKey, sortAsc)}}" > <!-- change of _sort() args triggers sorting --> {{item}} </template>
_sort()方法。 list 已正确排序和显示。 我有观察员观察 sortKey 或 sortAsc 的变化,这种情况在排序之前发生,所以它们没用。
列表上的观察者在排序后不会触发。 我需要知道排序何时完成,我可以处理已排序的列表。
谢谢你的帮助。
答案 0 :(得分:0)
您可以收听在渲染结束时将触发的dom-change
事件,因此在调用了排序和/或过滤器函数之后。
没有关于sort函数本身的具体事件。
https://github.com/Polymer/polymer/blob/master/src/lib/template/dom-repeat.html#L461
答案 1 :(得分:0)
经过一些研究后,我了解到没有&#34;排序完成&#34;事件因为它没用。 以下是Polymer的内容:
<template is="dom-repeat" sort="{{_sort(sortKey)}}">
处理,此处的排序将仅影响模板中显示的列表。作为列表源的JavaScript数组保持不变 - 未排序。Array.sort()
方法,因此列表将实际排序。可以通过观察{{sortKey}}
值的更改来触发JavaScript排序,然后可以进一步处理排序列表。看起来像是重复,但这是迄今为止我能找到的唯一解决方案。
聚合物岩石!
我正在重写最初在AngularJS中完成的应用程序。 ng-repeat需要42秒来渲染1000个项目的列表,Polymer会在几分之一秒内完成!