当我试图从数据库中列出一些东西时,我花了很长时间来调试故障的位置。事实证明,如果数组中的值是重复的,Angular将拒绝在ng-repeat中使用该数组。
可在此处找到一个示例:http://jsfiddle.net/2uyxu7ha/
Javascript:
var app = angular.module("Module", []);
app.controller("Controller", function($scope){
$scope.array1 = ["1", "2", "3", "4"];
$scope.array2 = ["1", "1", "3", "4"];
});
HTML:
<div ng-app="Module">
<div ng-controller="Controller as ctrl">
<ul>
<li ng-repeat="item in array1">{{item}}</li>
</ul>
<ul>
<li ng-repeat="item in array2">{{item}}</li>
</ul>
</div>
</div>
正如您将注意到的,在第二个数组中只有一个值重复,因此不会显示整个列表。如果您只是将第二个值更改为&#34; 2&#34;,则会显示该值。
我不想要这种行为,因为即使数据库中有一些重复值,我仍然希望在前端看到它们。为什么会发生这种情况,我该如何解决?
答案 0 :(得分:5)
答案 1 :(得分:0)
您需要在ng-repeat
结束时使用track by $index
答案 2 :(得分:0)
由于您正在使用ControllerAs语法,因此您可以使用此方法在控制器中引用$ scope,而在HTML中,您只需确保引用正确的数组。
请参阅更新的小提琴:
[http://jsfiddle.net/jaykan24/2uyxu7ha/2/][1]
现在您不必担心重复的ngRepeat问题。希望这可以帮助