2017-04-15 1 views
0

여기 내 plnkr입니다 http://plnkr.co/edit/0W1SZll1BOK5uuEtdycy?p=preview각도 : 편집 된 값을 저장하는 방법?

내 편집 연락처 모달에서 편집 된 값을 저장하려고합니다. 아무것도가,

$scope.edit = function(terminal) { 
$scope.name = terminal.name; 
$scope.last = terminal.last; 
$scope.age = terminal.age; 
} 

내가 각 사본에 대해 읽어 : 여기

객체에서 현재 값을 취하는 편집 방법? 그 중 하나를 어떻게하는지 배울 수 있습니다.

답변

1

당신은 ng-model에서 하나 개의 객체를 사용하지 않음으로써 별도의 수동 작업을 많이 만들 첫 번째 장소는 개별 범위 속성을 사용하는 대신입니다.

또한 황금률이있다 그 if you don't have a dot in ng-model you are doing it wrong

과 같이 수행 난 강력하게 당신이 jQuery를 없애 제안

$scope.edit = function(terminal) { 
    // store reference to terminal being edited 
    $scope.currentTerminal = terminal; 
    // make a copy so live one is not affected -- will be used in form 
    $scope.terminal = angular.copy(terminal); 
} 

$scope.save = function(){ 
    // update stored original with changes 
    angular.extend($scope.currentTerminal, $scope.terminal); 
    // reset terminal used in form 
    $scope.terminal ={}; 
} 

: 다음

<input ng-model="terminal.name"> 
<input ng-model="terminal.age"> 

는 다음과 같은 라인을 따라 작동 및 bootstrap.js 및 앵글 - 부트 스트랩 insted 사용

+0

charlietfl, 고맙습니다. PHP로 데이터베이스에 데이터를 저장하는 중입니다. 편집 할 값을 저장하는 새로운 함수가 필요합니까? 또는 확장 메서드를 자동으로합니까? – torresito

+1

하나의 객체를 사용하는 더 많은 이유가 있습니다. '$ http'에 막대기를 넣고보기 버전 만 업데이트하면됩니다. – charlietfl

+0

안녕하세요 charlietfl, ued와 같은 점으로 ngmodel을 시도했지만 클릭하면 수정 버튼을 누른 다음 추가 버튼을 누르면 양식 추가 입력에 값이 있습니다. – torresito

2

개체 또는 배열의 값을 다른 변수에 할당 할 때 해당 개체 값을 변경하면 안됩니다.

딥 복사 또는 angular.copy를 사용하지 않으면 속성 값을 변경하거나 새 속성을 추가하면 같은 개체를 참조하는 모든 개체가 업데이트됩니다. JS는 다음과 같습니다.

$scope.edit = function(terminal) { 
    $scope.name = angular.copy(terminal.name); 
    $scope.last = angular.copy(terminal.last); 
    $scope.age = angular.copy(terminal.age); 
    } 
+0

감사합니다 hamza, h 질문 : 데이터베이스에 PHP로 데이터를 저장하는 메신저, 내가 편집 값을 저장하는 새로운 기능이 필요합니까? 또는 복사 방법이 자동으로 그렇게합니까? – torresito

+1

여분의 $ scope 변수가 아닌 동일한 angular.copy를 사용하여 자바 스크립트 변수에 값을 추가하십시오. $ scope은 어떤 값이 뷰와 바인딩되는지 알려줍니다. – hamzox

1

편집 할 행의 색인을 전달해야합니다. 편집 버튼을 클릭하면 색인이 전달됩니다. script.js에서

변경 된 index.html에서

$scope.edit = function(terminal,index) { 

    $scope.name = terminal.name; 
    $scope.last = terminal.last; 
    $scope.age = terminal.age; 
    $scope.edit_index = index 

} 


$scope.saveEdit =function(){ 
    index = $scope.edit_index 
    $scope.terminals[index].name = $scope.name; 

    } 

변경

<td> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#editModalLong" ng-click="edit(terminal,$index)">Edit</button> 

<button type="button" class="btn btn-primary" data-dismiss="modal" ng-click="saveEdit()">Save</button> 

http://plnkr.co/edit/GpVB2dUiHCY6NslQDuBe?p=preview

관련 문제