2014-07-17 2 views
0

입력란에 ng-blur 기능이 있습니다. 내 blur 함수는 서버에 customPUT을 수행하기 위해 Restangular를 사용하고 angular.copy를 수행합니다. 오류의 원인이되는 줄은 angular.copy입니다.

입력 필드 :

<input type="text" ng-model="le.instance.from" ng-blur="blurField(le.instance.from, $event)"> 

흐림 핸들러

$scope.blurField = function (fieldNewValue, event) { 
    $scope.le.instance.customPUT({markSaved: true}).then(function(){ 
     angular.copy($scope.le.instance, $scope.leSaved); 
    }); 
}; 

문제를 일으키는 선은 angular.copy이다. 나는이 문제가 무엇인지 이해하지만 각진 복사를하면 다른 다이제스트가 실행되는 것을 볼 수 없다. 나는 내 모델 객체를 다른 객체에 복사하고있다.

또한 내 컨트롤러에서 $ apply 또는 $ digest에 대한 호출을 사용하지 않습니다.

이것을 이해하고/디버깅하는 데 도움이되는 팁이 있습니까?

+0

$ scope.le.intance에서 customPUT 함수를 호출 한 다음 콜백에서 변경하려고했기 때문에 직감적입니까? – V31

+0

좋은 힌트가 있지만 해결되지 않았습니다. $ scope.le.instance.customPUT을 putTemp.customPUT으로 대체했습니다. 여기서 putTemp는 $ scope.le.instance에 연결하지 않고 작성한 새 restangularizedElement입니다. – AlfaTeK

답변

0

당신 사회가 소화 서로에 대한 사본을 큐에 $timeout을 사용하는 것입니다 의해 $ 당신이 그것을 수행하여 모델을 변경 때문에 angular.copy 할 때 실행하는 과정을 소화하게는, 해결책 중 하나가 매우 자주 제안 할

$scope.blurField = function (fieldNewValue, event) { 
    $scope.le.instance.customPUT({markSaved: true}).then(function(){ 
    $timeout(function(){ 
     angular.copy($scope.le.instance, $scope.leSaved); 
    }) 
    }); 
}; 
관련 문제