2014-06-30 4 views
3

배열에 이름을 추가하는 작은 코드를 썼습니다. 나가 얻고있는 문제는 나가 동일한 이름을 두번 이상 추가하는 시도하는 경우에 저를 허용하지 않을 것이라는 점이다. 중복 된 이름을 추가하려고 시도한 후에도 다른 이름을 허용하지 않습니다. 내각 코드는 다음과 같습니다AngularJs 배열에서 중복을 추가하지 않습니다.

app.controller('DirectoryController', function($scope){ 
$scope.name=''; 
$scope.names= []; 


$scope.addName = function(){ 
    $scope.names.push($scope.name); 
} 

}); 기본 NG 반복함으로써

<span ng-repeat="name in names track by $index">{{name}}<br/></span> 

참조에 의해 배열의 항목을 추적하고 중복 리터럴가 동일 할 수 있습니다 :

그리고 여기가

<div ng-controller= "DirectoryController"> 
    <h3>Name:</h3><input type="text" ng-model='name'> 
    <button ng-click = "addName()">Save</button> 
    <hr/> 
    <span ng-repeat="name in names">{{name}}<br/></span> 
</div> 

답변

4

이 당신의 범위를 변경해보십시오 내 HTML입니다 정체. 배열에 중복이 있으면 기본 동작으로 인해 오류가 발생하여 표시되는 동작이 발생합니다 (복제를 추가하지 못하고 완전히 작동하지 않습니다).

중복이 발생하면 콘솔에 ng-repeat의 오류가 표시되어야합니다.

+0

약간 명확히하기 위해 @dustyrockpile은 실제로 배열에 중복 된 내용이 있지만 출력에서 ​​볼 수 없다고 말합니다. 아마도 $ scope.names의 내용을 들여다 보면서 {{names | json}}을 확인하십시오. –

+0

Thanks @ JohnMunsch, 명확히하기 위해 답을 업데이트했습니다. – dustyrockpyle

관련 문제