developer tip

ng-change는 새로운 가치와 원래 가치를 얻습니다

optionbox 2020. 8. 3. 08:29
반응형

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> 

예를 들어, 컨트롤러가 "이전 사용자. 이름은 BILL이고 현재 사용자 이름은 PHILLIPE"라고 기록하려고한다고 가정하겠습니다.


각도 {{expression}}을 사용하면 이전 사용자 또는 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가 각도별로 마지막 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}})와 같은 것을 사용할 수 있습니다. 값을 {{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


시계에는 이전 값과 새 값이 있기 때문에 대신 시계를 사용할 수 있지만 다이제스트주기에 추가하는 것입니다.

컨트롤러에 두 번째 변수를 유지하고 설정했습니다.

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

반응형