用于对列表进行排序的异步管道,每次出现鼠标或键盘事件时都会调用 - Angular4
Async Pipe used to sort a list, is called each time there is a mouse or keyboard event - Angular4
<div *ngFor="let student of mystudentsFiltered | orderBy : ['-presence', 'unreadcount']>
在上面的for
模板中,我使用了管道orderBy
,它对列表进行排序,每次列表中的项目(学生)状态发生变化。不知何故,每当有鼠标或键盘事件时,都会重复调用此管道。
我研究了更多,发现 Angular4 中的 pipe 每次 change detection[=] 都会 executed 28=]。 Angular4 在变更检测机制中考虑以下内容:
1) 事件 - 单击、提交、滚动,
2) XHR - 从远程服务器获取数据
3) 计时器 - setTimeout()、setInterval()
当有数据更改但不是默认更改检测事件时,我如何限制调用所述管道?
您不应使用排序管道或过滤管道。正如您自己所经历的那样,这对性能不利。您可以阅读更多相关信息 here。您需要在服务中进行订购
<div *ngFor="let student of mystudentsFiltered | orderBy : ['-presence', 'unreadcount']>
在上面的for
模板中,我使用了管道orderBy
,它对列表进行排序,每次列表中的项目(学生)状态发生变化。不知何故,每当有鼠标或键盘事件时,都会重复调用此管道。
我研究了更多,发现 Angular4 中的 pipe 每次 change detection[=] 都会 executed 28=]。 Angular4 在变更检测机制中考虑以下内容:
1) 事件 - 单击、提交、滚动,
2) XHR - 从远程服务器获取数据
3) 计时器 - setTimeout()、setInterval()
当有数据更改但不是默认更改检测事件时,我如何限制调用所述管道?
您不应使用排序管道或过滤管道。正如您自己所经历的那样,这对性能不利。您可以阅读更多相关信息 here。您需要在服务中进行订购