gpt4 book ai didi

javascript - Angular 不更新 View 中的嵌套 ng-repeats

转载 作者:行者123 更新时间:2023-11-30 12:46:52 24 4
gpt4 key购买 nike

我有一些嵌套 Controller ,每个 Controller 都用 ng-repeat 调用。

底层项目可以通过 ng-click 事件自行删除。此事件拼接数组中的项目。

在下面的 plunkr 中,如果删除第二个项目 (item2),则数组中只剩下 item1 和 item3,但 View 会看到 item1 和 item2。不再调用子 Controller ,而是使用缓存的 Controller 。

如何手动强制刷新这些 Controller ? angular 不应该为我做这个吗?

http://plnkr.co/edit/jDidC4anikwjZSLMWct6?p=preview

最佳答案

您目前正在通过 $index 进行跟踪,这不会按照您希望的方式更新:

这是一个 updated plunker .

我所做的唯一更改是在 pitem in items track by $index 中删除 track by $index (toplevel.html ):

<div ng-repeat="pitem in items" ng-include="" src="'mid-level.html'" ng-controller="midlevel">test</div>

编辑:

track by $index 在决定在 ng-repeat 中更新什么时,将使用 $index 值作为相等性检查。所以这就是正在发生的事情:

  1. 设置后我们有 [i: 0, name: 'item1', i: 1, name: 'item2', i: 2, name: 'item3']
  2. item2拼接出来
  3. track by $index 发现有变化并检查 $index 的值是否为 01 仍然存在于数组中
  4. 他们这样做,所以不执行更新
  5. 但是 $index 的值为 3 不存在
  6. 因此,它已更新并删除

关于javascript - Angular 不更新 View 中的嵌套 ng-repeats,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249743/

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