下午好,
我在Drupal7里面有一个恼人的AngularJS(v1.3.15)问题。 (注意:我刚刚提到CMS是完整的,但我不相信这是问题。)
我正在尝试在div上使用ng-repeat,但我不断收到错误 - > Error: [ngRepeat:dupes] http://errors.angularjs.org/1.3.15/ngRepeat/dupes?p0=x in RESULTS&p1=string: ...
我已经编写了一个示例jsfiddle,它模仿我在Drupal 7模块中的实现,但是它按预期在jsfiddle上工作,请参阅以下链接: https://jsfiddle.net/angsar/n8e312wf/
它只是在模块中工作,具有相同的样本数据。 关于如何解决这个问题的任何想法,或者至少追查真正的原因?
注意:我甚至尝试了这里提到的'track by'条款:https://docs.angularjs.org/error/ngRepeat/dupes
'track by'适用于jsfiddle,但不适用于D7模块。与模块中“跟踪”的唯一区别在于,控制台上没有显示错误,它不会打印出渲染的角度表达式,并且它会使循环输出增加三倍。 (例如:如果要从ng-repeat创建2个div,它将创建大约6个。)
感谢。
答案 0 :(得分:0)
我解决了。 我的D7模块的JavaScript文件中有一个非常愚蠢的错误。
(注意:请参阅上面的JSFiddle以了解变量及其数据)
我的错误是这样的; $scope.DATA = $filter('json')(data);
它指定一个'字符串'而不是'JSON对象',因此'ng-repeat'会在迭代时拾取一个字符数组,从而导致重复错误,因此它解释了为什么当我尝试'track by'时,为什么我无法使表达式工作(仅仅因为对象不存在),以及div等的三倍,因为它是一个逐字符地进行评估的字符串。
注意:'data'来自AngularJS中的AJAX回调。