source

ng 모델 변경 시 각도 - ng 모델 변경 시 불이 붙지 않음

ittop 2023. 10. 24. 21:32
반응형

ng 모델 변경 시 각도 - ng 모델 변경 시 불이 붙지 않음

입력 내용은 다음과 같습니다.

<input type="text" ng-model="repair.test"  ng-change="action()" />

action()입력을 수동으로 입력하고 변경하면 실행됩니다.하지만 만약 내가 수리를 바꾼다면.프로그래밍 방식으로 다른 함수에 의한 test value, ng-change의 동작을 수행하지 않습니다.각진 튜토리얼을 읽어봤는데 예상했던 행동일 거예요.

https://docs.angularjs.org/api/ng/directive/ngChange

"모델에서 값이 바뀌면 식이 평가되지 않습니다." <- 저도 이것이 필요합니다.모델이 변경될 경우 컨트롤러에서 액션을 수행하려면 어떻게 해야 합니까?(입력 또는 기타 기능에 의한 typing)

도와 주셔서 감사해요.

편집:

모델 값은 실제로form.$valid, 그 주변에 자체 Form controller가 있어서(생각합니다) 그래서 action function을 사용해서 그 값을 부모컨트롤러에 전달하려고 한거죠.$scope.$watch초기화된 경우에만 작동하지 않습니다.

ngChange는 단지 입력을 위한 것입니다. 만약 모델이 이렇게 하는 것을 듣고 싶다면 이렇게 하십시오.

$scope.$watch('repair.test', function(newvalue,oldvalue) {

            });

ngChange 식은 입력 값의 변경으로 인해 새 값이 모형에 커밋되는 경우에만 평가됩니다.

평가되지 않습니다.

  • 만약 그 값이 그로부터 반환된다면.$parsers변환 파이프라인이 변경되지 않았습니다.
  • 모델이 null로 유지되므로 입력이 계속 유효하지 않은 경우
  • 입력 값의 변경이 아닌 프로그래밍 방식으로 모델을 변경하는 경우

$scope을 사용하여 감시자를 만들어 봅니다.$시계 -$watch(watchExpression, listener, [objectEquality]);

$scope.$watch('repair.test', function(newValue, oldValue) {
    // ...
});

컨트롤러에서 감시 기능을 사용할 수 있습니다.

$scope.$watch('repair.test', function() {
    $scope.action();
});

또 다른 해결책은 모델의 변경 사항을 감시하는 지시를 사용하는 것이 아니라ng-change.

app.directive('onModelChange', function($parse){
    return {
        restrict: "A",
        require: "?ngModel",
        link: function(scope, elem, attrs, ctrl) {
            scope.$watch(attrs['ngModel'], function (newValue, oldValue) {
                if (typeof(newValue) === "undefined" || newValue == oldValue) {
                    return;
                }
                var changeExpr = $parse(attrs['onModelChange']);
                if (changeExpr) {
                    changeExpr(scope);
                }
            });
        } 
    };
});

그러면 이렇게 사용하게 됩니다.

<input class="value" type="text" ng-model="myVar" on-model-change="doSomething(myVar)"/>

언급URL : https://stackoverflow.com/questions/24802627/angular-ng-change-not-firing-when-ng-model-is-changed

반응형