为什么当我使用for循环而不是if语句时,我得到了ng-repeat重复错误



在这个Plunker的代码工作,因为它应该(只是前3个链接做某事)。但是随着列表开始变长,我意识到我需要一个for循环。所以在switch function中我变换了这个

  if(obj == "SP") {
    $scope.discipline ='Link2'
    return $scope.files = spFiles;
  }
  else if(obj == "LSM"){
    $scope.discipline = "Link3"
    return $scope.files = lsmFiles;
  }
  else if(obj == "AR"){
    $scope.discipline = "Link1"
    return $scope.files = arFiles;
  }

这:

for(i=0;i<disciplines.length;i++){
   if(obj == disciplines[i].initial){
       return $scope.files = disciplines[i].array;
   }
}

纪律数组位于script.js文件的顶部。

问题是,现在突然我得到一个错误当我点击其中一个链接。我不知道什么在复制。我阅读了此错误的文档,并将track by $index添加到位于index.html底部的ng-repeat。看看这个普朗克,看看它现在做了什么。当然,这有一个简单的解释。我从来没有遇到过这种情况。

我能在这里找到的唯一另一个答案似乎与我的问题有关的是这个,但是,ng-repeat正在使用的对象不是JSON对象,我很确定:

spFiles.push({
      floor:floors[c].name, initial:floors[c].initial, status:spFloorStatus[i]
});

另外,在我创建for循环引起问题之前,它已经工作了。

如果有什么不清楚的地方我道歉。请,如果你需要我澄清任何事情,请告诉我,我已经尽可能彻底,尽可能不让人困惑了。

这是因为学科[i]。数组返回字符串,而不是变量,命名为arFiles。

您可以将这些变量初始化为:

var tempFiles={};

,然后加上:

tempFiles.arFiles={
      floor:floors[c].name, initial:floors[c].initial, status:arFloorStatus[i]
    };

和get

return $scope.files = tempFiles[disciplines[i].array];

最新更新