gpt4 book ai didi

javascript - 保持 ng-init 变量与分配的 $index 同步

转载 作者:行者123 更新时间:2023-12-03 10:09:21 26 4
gpt4 key购买 nike

我有两个嵌套的ng-repeat在两者中我都集中使用各自的 $index 。因此,为了便于阅读,我使用 ng-init “重命名”了第一个 $index (即:ng-init="backupIndex = $index")。在起点一切都很好,并且 backupIndex始终等于$index

问题是如果我从绑定(bind)到 ng-repeat 的集合中删除元素然后backupIndex$index 不同步.

这是一个plunker 。我该如何维护$indexbackupIndex同步吗?

最佳答案

如果你可以省略 ng-init 就可以做到部分和,

<ul ng-repeat="value in values">
<span style="display: none"> {{ backupIndex = $index }}</span>
<li>backUp: <b>{{backupIndex}}</b> $index: <b>{{$index}}</b> <button ng-click="rem(backupIndex)">Remove</button></li>
</ul>

<span style="display: none"> {{ backupIndex = $index }}</span>此行将分配 backupIndex $index 的值它将与 $index 同步

这是DEMO

<小时/>

<ul ng-repeat="value in values" ng-init="backupIndex = $index">

ng-init仅第一次执行,它将创建一个 ng-repeat的子作用域变量称为 backupIndex并将其赋值为 $indexbackupIndex$index 不同步.

var ngInitDirective = ngDirective({
priority: 450,
compile: function() {
return {
pre: function(scope, element, attrs) {
scope.$eval(attrs.ngInit);
}
};
}
});

这是angular.js指令ng-init 。它所做的就是获取 ng-init 中的表达式并在当前范围内执行表达式并返回结果。

在本例中:ng-init表达式为backupIndex = $index然后在 scope.$eval(attrs.ngInit); ( attrs.ngInit 的表达式为 backupIndex = $index )backupIndex = $index表达式在 ng-repeat 上执行的范围。这意味着此时有一个名为 backupIndex 的变量在ng-repeat的范围,值为 $index就是这样。

关于javascript - 保持 ng-init 变量与分配的 $index 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30209713/

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