所以我有一个嵌套的ng-repeat,如下所示:
<div ng-repeat="data in flow" ng-init="$flowIndex = $index">
Index: {{ $index }}
<div ng-click="flow.splice($index, 1)">Delete me</div>
<div ng-repeat="inside_data in flow[$flowIndex]">
Inside index: {{ $index }}
</div>
</div>
我希望能够删除$flowIndex
中的索引。但是,如果我有这样的事情:
0
1
2
3
我删除了索引2
。如果我去删除索引3
,则找不到它,因为ng-init变量仍然在索引3处,但实际上它不在索引2处。
有谁知道一项工作?
答案 0 :(得分:2)
你可以摆脱$flowIndex
,没有必要,你可以使用$parent.$index
,当你使用ngRepeat
时它会创建一个子范围而$index
是其中的一部分该范围。还可以考虑将删除逻辑移动到控制器中。
控制器:
$scope.delete = function ($index) {
$scope.flow.splice($index, 1);
};
HTML:
<div ng-repeat="data in flow">
Index: {{ $index }}
<div ng-click="delete($index)">Delete me</div>
<div ng-repeat="inside_data in flow[$index]">
Inside index: {{ $parent.$index }} -> {{ $index }}
</div>
</div>
答案 1 :(得分:0)
我相信你可以这样得到父索引:
$parent.$index
如本回答所述:passing 2 $index values within nested ng-repeat
这样您就不必担心变量与当前状态不同步。
答案 2 :(得分:0)
我刚用一些虚拟数据字符串测试了你的类似代码,删除似乎有效。我对您的代码进行了一些更新,以便更好地分析它。
// Code goes here
var myApp = angular.module('myApp',[]);
myApp.controller('MyController', ['$scope', function($scope) {
$scope.flow = [
["test01","test02","test03"],
["test11","test12","test13"],
["test21","test22","test23"],
["test31","test32","test33"],
["test41","test42","test43"]
]
;
}]);
&#13;
<!DOCTYPE html>
<html>
<head>
<script data-require="angularjs@1.5.8" data-semver="1.5.8" src="//opensource.keycdn.com/angularjs/1.5.8/angular.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="myApp">
<section ng-controller="MyController">
<div ng-repeat="data in flow">
Index: {{ $index }}
<div ng-click="flow.splice($index, 1)">Delete me [{{ $index }}]</div>
<div ng-repeat="inside_data in flow[$index]">
Inside index: {{ $index }} : {{ inside_data }}
</div>
<hr>
</div>
</section>
</body>
</html>
&#13;