2017-03-11 5 views
1

각도 재질 md-dialog을 사용하고 있습니다. 사용자가 버튼 (편집 버튼)을 클릭하여 대화 상자를 표시하고 현재 객체 (테이블의 행)를 가져와 showDialog 함수에 전달하면 대화 상자 필드각도에서 양방향 바인딩을 비활성화 하시겠습니까?

<button ng-class="showDialog(task)">Open dialog</button> 

ShowDialog를 기능 : 그 값

$scope.showDialog = function (task) { 
    $scope.taskToEdit = task; 
    $mdDialog.show({ 
     controller: DialogController, 
     contentElement: '#taskEdit', 
     parent: angular.element(document.body), 
     clickOutsideToClose: true 
    }); 
}; 

하지만 라이브 테이블이 동일한 키 입력을 받고 테이블에 다시 바인딩이 대화 상자에서 값을 편집 할 때마다 값을 대화 상자로 가져오고, 외부 (편집 취소)를 클릭하면이 값 지속 되라. 그렇다면이 양방향 바인딩을 비활성화하고 객체 복사본을 참조가 아닌 showDialog 함수에 전달하는 방법이 있습니까?

+0

개체의 복사본을 전달할 방법이 있습니까? 예, 있습니다. 카피를 작성해, showDialog 함수에 건네줍니다. 당신은 객체의 사본을 만드는 방법을 묻고 있습니까? 물체는 어떤 모습입니까? 너 뭐 해봤 니? –

+0

안녕하세요, 모하메드, 아직 귀하의 답변을 기다리고 있습니다. http://stackoverflow.com/questions/42717303/ng-show-display-the-contents-before-the-page-finished-loading/42717354#42717354 – lin

답변

3

이 경우 angular.copy()해야합니다.

$scope.taskToEdit = angular.copy(task); 

이 AngularJS와의 결합 E2E을 해제하지 않고는 $scope 업데이트를 방지 할 수 있습니다 :이 이에 대한 접근 방법이 많이 있지만 간단한 솔루션을 사용한다는 - 시도 - angular.copy()가이 시간을 어떻게해야하는 이유 이잖아 당신의 주요 관점에서.