programing

ngModel의 $render는 언제 AngularJS에서 호출됩니까?

lastmoon 2023. 3. 18. 09:16
반응형

ngModel의 $render는 언제 AngularJS에서 호출됩니까?

이 공식 예에서는 다음 코드가 무엇을 하고 있습니까?

// model -> view
ctrl.$render = function() {
  elm.html(ctrl.$viewValue);
};

가 볼 때,$render는 호출되지 않습니다.

언제$render실제로 호출되었습니까?


갱신하다

처럼 보인다$render모델이 변경될 때마다 호출됩니다.그러나 모델이 초기 값을 얻으면 호출되지 않습니다.초기값의 렌더링을 제어하는 방법이 있습니까?

맞다$render모델이 변경되면 Angular에 의해 호출됩니다.$render 문서에 따르면:

$syslog()

보기를 업데이트해야 할 때 호출됩니다.ng-model 디렉티브 사용자는 이 메서드를 구현할 것으로 예상됩니다.

어떻게 하는지 보면 도움이 된다.$render호출되다ngModelWatch(이것은, 항상,ngModel변경).여기에서는, 라고 불리는 것을 볼 수 있습니다.$viewValue갱신, 그리고 마지막으로$render라고 부릅니다.

$scope.$watch(function ngModelWatch() {
    var value = ngModelGet($scope);

    // if scope model value and ngModel value are out of sync
    if (ctrl.$modelValue !== value) {

      var formatters = ctrl.$formatters,
          idx = formatters.length;

      ctrl.$modelValue = value;
      while(idx--) {
        value = formatters[idx](value);
      }

      if (ctrl.$viewValue !== value) {
        ctrl.$viewValue = value;
        ctrl.$render();
      }
    }

    return value;
  });
}];

초기값이 호출되지 않는 이유는 디렉티브 끝에 다음 행이 있기 때문입니다.

// load init value from DOM
ctrl.$setViewValue(elm.html());

트리거하지 않고 뷰 값을 수동으로 업데이트합니다.ngModelWatch()따라서 이 과정을 거치지 않고$formatters또는$render. 그 행이 대신일 경우:

scope.content=elm.html();

아시겠죠?$renderAngular에 의해 호출되어 그것이 트리거가 된다.$watch

언급URL : https://stackoverflow.com/questions/21083543/when-ngmodels-render-is-called-in-angularjs

반응형