IT

ng-change는 새로운 가치와 원래 가치를 가져옵니다.

itgroup 2023. 3. 14. 21:32
반응형

ng-change는 새로운 가치와 원래 가치를 가져옵니다.

풀다운에서 값을 선택하기 위해 ng-options를 사용하고 있습니다.오래된 값과 새로운 값을 비교할 수 있으면 좋겠습니다.ng-change는 풀다운의 새로운 값을 얻는 데 효과적입니다만, 어떻게 하면 새로운 값과 원래 값을 모두 얻을 수 있을까요?

<select ng-change="updateValue(user)" ng-model="user.id" ng-options="user.id as user.name for user in users"></select> 

예를 들어 컨트롤러에 "이전 user.name은 BILL, 현재 사용자 이름은 FILIPE"라고 기록하도록 하겠습니다.

angular {{ngion}}을 사용하면 오래된 사용자 또는 user.id 값을 리터럴 문자열로 ng-change 속성에 추가할 수 있습니다.

<select ng-change="updateValue(user, '{{user.id}}')" 
        ng-model="user.id" ng-options="user.id as user.name for user in users">
</select>

ngChange에서는 updateValue에 대한 첫 번째 인수는 새로운 사용자 값이 되고 두 번째 인수는 select-tag가 angular에 의해 마지막으로 갱신되었을 때 형성된 리터럴로 오래된 user.id 값이 사용됩니다.

또,

<select ng-change="updateValue(user, oldValue)"     
       ng-init="oldValue=0"
       ng-focus="oldValue=user.id"
       ng-model="user.id" ng-options="user.id as user.name for user in users">
</select>

ng-change=someMethod({user.id}}) 등의 것을 사용할 수 있습니다.side {{expression}}에 값을 유지하면 표현식이 인라인으로 평가되어 현재 값(ng-change 메서드가 호출되기 전의 값)을 얻을 수 있습니다.

<select ng-model="selectedValue" ng-change="change(selectedValue, '{{selectedValue}}')">

변경 시마다 업데이트하는 currentValue 변수를 컨트롤러에 유지하십시오.그런 다음 업데이트하기 전에 매번 이 값을 새 값과 비교할 수 있습니다.

시계를 사용한다는 아이디어도 좋지만, 간단한 변수가 가장 간단하고 논리적인 해결책이라고 생각합니다.

스코프 워치를 사용할 수 있습니다.

$scope.$watch('user', function(newValue, oldValue) {
  // access new and old value here
  console.log("Your former user.name was "+oldValue.name+", you're current user name is "+newValue.name+".");
});

https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$watch

대신 시계를 사용할 수 있습니다. 시계에는 이전 값과 새 값이 포함되어 있지만, 그런 다음 다이제스트 사이클을 추가합니다.

컨트롤러에 두 번째 변수를 두고 설정하기만 하면 됩니다.

항상 다음 작업을 수행할 수 있습니다.

... ng-model="file.PLIK_STATUS" ng-change="file.PLIK_STATUS = setFileStatus(file.PLIK_ID,file.PLIK_STATUS,'{{file.PLIK_STATUS}}')" ...

컨트롤러:

$scope.setFileStatus = function (plik_id, new_status, old_status) {
    var answer = confirm('Czy na pewno zmienić status dla pliku ?');
    if (answer) {
        podasysService.setFileStatus(plik_id, new_status).then(function (result) {
            return new_status;
        });
    }else{
        return old_status;
    }
};

언급URL : https://stackoverflow.com/questions/26621104/ng-change-get-new-value-and-original-value

반응형