gpt4 book ai didi

javascript - 绑定(bind)一次但允许刷新整个项目的有效方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:52 24 4
gpt4 key购买 nike

假设一个包含 1000 个项目的列表无限滚动显示。

每个项目显示:一个人的名字、姓氏和心情。 (为了简单起见)

最初,我不想听更新。
太棒了angular-bindonce指令甚至更好:angular 1.3 的单一绑定(bind)功能成功了。

现在,我创建了一个 pull-to-refresh组件,允许刷新整个项目。
然而,由于绑定(bind)一次,(而不是重新加载页面)我的整个列表没有考虑更新。

使用 angular-bindonce,我目前有这个:

<div bindonce ng-repeat="person in persons track by person.id">
<span bo-text="person.firstName"></span>
<span bo-text="person.lastName"></span>
<span bo-text="person.currentMood"></span>
</div>

下拉刷新触发这个函数:

$scope.refresh() {
Persons.getList(function(response)) {
$scope.persons = response.data; //data being an array
}
}

问题是:

有没有办法只在触发下拉刷新时刷新所有数据?
在这种情况下,我将能够保留这个绑定(bind),这将在处理大量人员列表时大大提高性能。

直到现在,我不得不……使用双向绑定(bind),这是 Angular 工作的自然方式。

更一般地说,如何处理具有无限滚动且仅在某些事件被触发时才需要更新的巨大列表?

最佳答案

获取angular-bind-notifier .

使用原生绑定(bind)(使用稍微修改过的语法)并像这样设置您的标记:

<div ng-repeat="person in persons track by person.id" bind-notifier="{ eventKey:watchedExpression }">
<span>{{:eventKey:person.firstName}}</span>
<span>{{:eventKey:person.lastName}}</span>
<!-- or with ng-bind if you prefer that -->
<span ng-bind=":eventKey:person.currentMood"></span>
</div>

现在,每当 watchedExpression 的值发生变化时 - $broadcast 将通过 bind-notifier 创建的子作用域向下发送并告知使用 :key:expr 语法重新计算的每个绑定(bind)。


如果需要,您也可以按照以下格式手动发送$broadcast:

$scope.$broadcast('$$rebind::' + key) // where 'key' === 'eventKey' in the example above.

关于javascript - 绑定(bind)一次但允许刷新整个项目的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27300475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com