2017-12-29 23 views
-1

입력 텍스트에서 $ watch를 사용하려고합니다. 처음으로 타이핑 할 때 정의되지 않은 값을 반환하며, 두 번째 타이핑을 시도 할 때 더 이상 작동하지 않습니다.

내가 뭘 잘못하고 있니?

$scope.$watch('formNovoCred.dadosEC.representante.cpf', function(newValue, oldValue) { 
$rootScope.formNovoCred.dadosEC.representante.cpf = $rootScope.formNovoCred.dadosEC.representante.cpf; 

    if (newValue != oldValue){ 
    console.log("here", $rootScope.formNovoCred.dadosEC.representante.cpf); 
    } 
}, true); 
+1

입력에 반응하려면 [ng-change] (https://docs.angularjs.org/api/ng/directive/ngChange) 지시문을 사용하십시오. – georgeawg

답변

0

위의 시계 기능, scopeVariable을 범위 변수를 취하고 그것에 어떤 변화를 감시

$scope.$watch('scopeVariable', function() { 
    alert('scopeVariable has changed'); 
}); 

이해 $ 시계.

ng-model이 변수를 업데이트하므로이 함수 내에서 범위 변수를 자체에 할당 할 필요가 없습니다. 귀하의 경우에 당신은 오래된 것과 새로운 것을 비교하고 있습니다. 이것은 이전 값으로 무엇인가를해야하는 경우 유용합니다 (new가 너무 크거나 응용 프로그램의 범위를 벗어나면 값을 old로 재설정하십시오).

코드에 대한 전체 그림이 없으면 여기에서 도움을받을 수 있습니다.

또한 변화에 뭔가 할 수있는 NG-변경 방법을 시도 할 수 있습니다 :

각도의 ng-change 화재 각각의 모든 변경 후입니다. debounce을 사용하면 설정된 기간이 경과 할 때까지 변경 이벤트가 달라질 수 있습니다. 이렇게하면 누군가가 정상적으로 타이핑을 마칠 때까지 이벤트 실행을 일시 중지 할 수 있습니다.

추가 속성으로 입력 요소에 다음을 추가하십시오. 또한, 귀하의 의견은 ng-model="yourScopeVariable"

예를 통해 각도 변수에 연결되어 있는지 확인합니다 :

ng-model-options="{ debounce: 1000 }" 

1000은 ms 단위 시간입니다. 1000 = 1 초.

그런 다음 변경 기능을 구축하고과 같이뿐만 아니라 입력에 대한 호출을 추가합니다 : ng-change="changeFunc(canPassParams)"

자세한 내용은없이, 이것은 내가 제공 할 수있는 조언의 범위이다. 희망을 찾으십시오.