Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';如果一个值重复,t AngularJS是否要列出数组项?_Javascript_Angularjs_Angularjs Ng Repeat_Ng Repeat - Fatal编程技术网

Javascript 为什么';如果一个值重复,t AngularJS是否要列出数组项?

Javascript 为什么';如果一个值重复,t AngularJS是否要列出数组项?,javascript,angularjs,angularjs-ng-repeat,ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,Ng Repeat,当我试图从数据库中列出一些东西时,我花了很长时间调试错误所在。结果表明,如果数组中存在重复的值,Angular将在ng repeat中拒绝使用该数组 可在此处找到一个示例: Javascript: var app = angular.module("Module", []); app.controller("Controller", function($scope){ $scope.array1 = ["1", "2", "3", "4"]; $scope.array2 = ["

当我试图从数据库中列出一些东西时,我花了很长时间调试错误所在。结果表明,如果数组中存在重复的值,Angular将在ng repeat中拒绝使用该数组

可在此处找到一个示例:

Javascript:

var app = angular.module("Module", []);
app.controller("Controller", function($scope){
    $scope.array1 = ["1", "2", "3", "4"];
    $scope.array2 = ["1", "1", "3", "4"];
});
HTML:


  • {{item}
  • {{item}
您会注意到,在第二个数组中只有一个值重复,因此不会显示整个列表。如果您只是将第二个值更改为“2”,则将显示该值


我不希望出现这种行为,因为即使数据库中有一些重复的值,我仍然希望在前端看到它们。为什么会发生这种情况?我该如何解决

对于这种情况,您需要
按$index跟踪

文件说明:


您需要在ng repeat的末尾使用
track by$index
因为您使用的是ControllerAs语法,所以您可以使用它在控制器中引用$scope,在HTML中只需确保引用了正确的数组

请参阅更新的小提琴:

[http://jsfiddle.net/jaykan24/2uyxu7ha/2/][1]

现在,您不必担心重复问题。希望这能有所帮助

错误消息清楚地表明:
error:[ngRepeat:dupes]中继器中不允许重复。使用“跟踪依据”表达式指定唯一关键点。Repeater:item in array2,Duplicate key:string:1
Duplicate of:您从代码中删除了重复项,因此您甚至没有解决该问题。
[http://jsfiddle.net/jaykan24/2uyxu7ha/2/][1]