2015-04-21 2 views
0

Я хочу иметь глобальную переменную, и я также занимаюсь производством и сервисом функции AngularJS и suddendly Я противопоставляю эту странную ошибку. Это ошибка: (В моем файле index.html, я использую ngRepeat как регулярные, кажется, эта ошибка только воспитывали, когда 2 контроллера разделяют глобальную переменную)2 Контроллеры и 1 значение в AngluarJS

Error: [ngRepeat:dupes] http://errors.angularjs.org/1.3.15/ngRepeat/dupes?p0=item%20in%20sharedvalue&p1=number%3A0&p2=0 
    at Error (native) 
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:6:417 
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:234:39 
    at Object.fn (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:122:291) 
    at n.$get.n.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:123:356) 
    at n.$get.n.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:126:293) 
    at HTMLButtonElement.<anonymous> (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:216:126) 
    at HTMLButtonElement.c (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js:32:389) 

Это мой код:

(function(){ 
     var app = angular.module("app",[]); 
     app.factory('MyFactory', function(){ 
     return{ 
      a: 'This is a', 
      b: 'This is b', 
      c: function(){ 
      this.a+='a'; 
      this.b+='b'; 
      } 
     } 
     }); 
     app.service('MyService', function(){ 
     this.a='This is A'; 
     this.b='This is B'; 
     this.c = function(){ 
      this.a+='A'; 
      this.b+='B'; 
     } 
     }); 
     app.controller('SharedFactory', function($scope,MyFactory,SharedValue){ 
     $scope.a = MyFactory.a; 
     $scope.b = MyFactory.b; 
     $scope.c = MyFactory.c; 
     $scope.sharedvalue = SharedValue; 
     var i=0; 
     $scope.increase = function(){ 
      SharedValue.push(i); 
      i++; 
     }; 
     }); 
     app.controller('SharedService', function($scope,MyService,SharedValue){ 
     $scope.a = MyService.a; 
     $scope.b = MyService.b; 
     $scope.c = MyService.c; 
     $scope.sharedvalue = SharedValue; 
     var i=0; 
     $scope.increase = function(){ 
      SharedValue.push(i); 
      i++; 
     }; 
     }); 
     app.value('SharedValue', []); 

}()); 
+0

У вас есть дубликаты в массиве, в котором вы «ng-repeat». Покажите нам какой-нибудь HTML-код, или, может быть, первое предложение, которое я написал, достаточно ... –

+0

Нам нужно увидеть DOM, директива ng-repeat используется в – DrCord

ответ

0

ошибка ясна:

Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: item in sharedvalue, Duplicate key: number:0, Duplicate value: 0

у вас есть один и тот же ключ используется дважды в вашем ng-repeat. Использовать track by, например:

<div ng-repeat="item in sharedvalue track by $index"></div>