source

$watch는 초기화 직후에 트리거됩니다.왜요?

nicesource 2023. 3. 10. 22:08
반응형

$watch는 초기화 직후에 트리거됩니다.왜요?

페이지 로드 직후 $watch가 트리거되는 이유는 무엇입니까?또한 이를 방지하려면 어떻게 해야 합니까?

http://jsfiddle.net/dcSRu/2/

function MyCtrl($scope) {
    // Init scope vars
    $scope.data_copy = {};

    // If data_copy changes...
    $scope.$watch("data_copy", function(newValue, oldValue) {

        alert("$watch triggered!");

    }, true);
}

첫 번째 실행 시 두 값 모두(newValue그리고.oldValue)가 같기 때문에, 동등성을 체크하는 것으로 간단하게 회피할 수 있습니다.

$scope.$watch("data_copy", function(newValue, oldValue) {
  if(newValue === oldValue){
    return;
  }
  alert("$watch triggered!");
});

PLUNKER

$watch 함수를 angular ready 함수로 감습니다.

angular.element(document).ready(function() 
{ 
  $scope.$watch("data_copy", function(newValue, oldValue) {
    alert("$watch triggered!");
  }, true);
})

각도 로드 시 페이지.값이 변경되고 $watch가 트리거됩니다.

여기에서는 이미 매우 좋은 논의가 이루어지고 있습니다.

AngularJS에서 모델 변경을 볼 때 초기 하중을 무시하려면 어떻게 해야 합니까?

$138.$watch fieldcontainer', 함수(new_fieldcontainer, old_fieldcontainer) {

(type of old_fieldcontainer === 'fieldcontainer')가 반환되는 경우,

// 변경된 개체를 처리하기 위한 기타 코드입니다.

});

언급URL : https://stackoverflow.com/questions/15875105/watch-is-triggered-directly-after-init-why

반응형