gpt4 book ai didi

javascript - 与 ng-repeat trackBy 的一次性绑定(bind)不会更新

转载 作者:行者123 更新时间:2023-11-28 06:05:46 24 4
gpt4 key购买 nike

我试图通过在 ngRepeat 中使用“track by”以及使用一次性绑定(bind)来最大程度地减少 AngularJS 应用程序中的观察者数量。

例如

我的观点:

<div ng-repeat="item in items track by trackingId(item)">
{{ ::item.updated_at }} {{ ::item.id }}
</div>

我的trackingId和范围看起来像这样:

$scope.items = [
{ id: 1, updated_at: 'January 1, 2015' },
{ id: 2, updated_at: 'January 1, 2016' },
...
]

$scope.trackingId = function(item) {
return item.id + '_' + item.updated_at;
}

现在,在我的应用程序中的某个位置,项目的 Updated_at 值发生了更改。例如,

$scope.updateItem = function(item) {
item.updated_at = Date.now();
}

然后,由于该项目的trackingId值被更改,我希望 View 将该项目反射(reflect)为DOM中的"new"项目,从而更新一次性绑定(bind)值,但这并没有发生。

我对一次性绑定(bind)+trackBy的理解是否错误?如何实现上述目标,以便如果我的trackingId更改,该项目将在 View 上重新绘制?

谢谢

最佳答案

当您更新附加到作用域的项目时,您必须让 Angular 知道绑定(bind)已更改,并且要使用 $scope.$apply() 来执行此操作。

 $scope.updateItem = function(item) {
item.updated_at = Date.now();
$scope.$apply();
}

关于javascript - 与 ng-repeat trackBy 的一次性绑定(bind)不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36871184/

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