Javascript 嵌套ng在角度不更新视图中重复
我有一些嵌套的控制器,每个都用ng repeat调用 底层项目能够通过ng click事件移除自身。此事件将拼接阵列中的项 在下面的plunkr中,如果删除第二个项(item2),那么数组将保留item1和item3,但视图将看到item1和item2。不再调用子控制器,并使用缓存的控制器 如何手动强制刷新这些控制器?难道你不应该为我做这件事吗Javascript 嵌套ng在角度不更新视图中重复,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我有一些嵌套的控制器,每个都用ng repeat调用 底层项目能够通过ng click事件移除自身。此事件将拼接阵列中的项 在下面的plunkr中,如果删除第二个项(item2),那么数组将保留item1和item3,但视图将看到item1和item2。不再调用子控制器,并使用缓存的控制器 如何手动强制刷新这些控制器?难道你不应该为我做这件事吗 您当前正在通过$index进行跟踪,它不会以您想要的方式更新: 这是一个例子 我所做的唯一更改是在pitem in items track by$ind
您当前正在通过
$index
进行跟踪,它不会以您想要的方式更新:
这是一个例子
我所做的唯一更改是在pitem in items track by$index
(toplevel.html
)中取出track by$index
):
测试
编辑:
当决定在ng repeat
中更新什么时,track by$index
将使用$index
值作为相等性检查。这就是正在发生的事情:
[i:0,名称:'item1',i:1,名称:'item2',i:2,名称:'item3']
item2
已拼接出来track by$index
查看是否有更改,并检查数组中是否仍存在值为0
和1
的$index
3
的$index
是的,问题是您正在检查item.name,但您正在将更新的列表存储在pitems.name中,因此如果您从
{{item.name}} <span ng-click="delete(items, $index)">x</span>
{{item.name}}x
到
{{pitem.name}}x
这很好。当您可以直接使用
ng include“'mid-level.html'”时,为什么还要使用syntacsng include=“'src=“'mid-level.html'”
呢!!!是否有任何文档说明track by没有按照我的预期工作?@MatB我添加了一个详细的分类,说明了使用$index
是如何破坏预期行为的。
{{item.name}} <span ng-click="delete(items, $index)">x</span>
{{pitem.name}} <span ng-click="delete(items, $index)">x</span>