2014-11-19 3 views
0

를 삭제하지 I 간단한 배열과 기능을 가지고 방금 읽은 것, 입력에 값을 입력하고 버튼을 클릭하면 입력 값이 나열된 배열에 추가되고 양식이 지워집니다.폼 배열에 추가하고 내 컨트롤러

대신 빈 행이 목록에 삽입되어 값이 입력에 남아 있습니다.

내가 놓친 것을 누구든지 볼 수 있습니까?

+1

이 난을 createad 문제 –

+1

을 보여주기 위해 plunker 또는 바이올린을 만드는 시도 JSFiddle 코드와 잘 작동합니다 : http://jsfiddle.net/gbfgs0fo/3/ –

+0

그래서 혼란스러워 ... 코드는 jsFiddle에서 작동하지만 내 페이지에서 빈 행과 전체 입력 및 오류가 발생합니다. 콘솔에. 어리석은 유형이 아니 었는지 확인하기 위해 필자는 피들을 코드로 복사하여 붙여 넣었습니다. – jgravois

답변

-1

guarantor: $scope.newGuarantor을 밀어 넣은 후 $scope.newGuarantor을 다시 설정하십시오. 따라서 푸시 된 값은 $scope.newGuarantor의 재설정으로 인해 재설정됩니다.

$scope.newGuarantor의 재설정에 영향을주지 않고 새 개체를 밀어 넣어야하는 경우 angular.copy()을 사용하면 variable의 새 복사본이 만들어지며 해당 복사본은 원래 값의 영향을받지 않습니다. 즉, 원래 값을 변경하면 복사 값이 변경되지 않습니다. 따라서 원본 변수와 사본 변수 간에는 아무 관계도 없습니다.

$scope.addGuarantor = function(){ 
var objVal = angular.copy($scope.newGuarantor); 
$scope.guarantors.push({ 
    guarantor: objVal 
}); 
$scope.newGuarantor = ''; 

}};

+0

설명이 완벽하게 이해 되었기 때문에 나는 다른 것을 놓쳐 버렸음에 틀림 없다. 그러나이 코드는 나에게 똑같은 결과를 가져온다. 새로운 빈 행과 입력이 여전히 채워진다. – jgravois

+3

정답이 아닙니다. OP 코드는 처음부터 잘 작동합니다. 또한 문자열과 같은 간단한 값은 항상 JavaScript에 의해 참조로 복사되지 않고 전달됩니다. 그래서 문자열에 "copy"를 호출해도이 코드가 작동하는 방식이 바뀌지 않습니다. –

0

확실하지이 작동하지만이에 컨트롤러를 변경 왜 그것은

$scope.newGuarantor = {}; 
$scope.addGuarantor = function() { 
    $scope.guarantors.push($scope.newGuarantor); 
     $scope.newGuarantor = {}; 
    }; 

뷰가 변경 일 :

<tr ng-repeat="pg in guarantors"> 
        <td>{{pg.guarantor}}</td> 
       </tr> 
       <tr> 
        <td> 
         <form ng-submit="addGuarantor()"> 
          <input type="text" ng-model="newGuarantor.guarantor"/> 
          <button type="submit">       <span class="glyphicon glyphicon-plus"></span> 
          </button> 
         </form> 
        </td> 
       </tr> 
관련 문제