我想在输入文本中使用$ watch。当我第一次输入时,它返回undefined,当我第二次尝试输入时它不再起作用,依此类推。
我究竟做错了什么 ?
$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);
了解$ watch
$scope.$watch('scopeVariable', function() {
alert('scopeVariable has changed');
});
上面的监视功能需要一个范围变量scopeVariable
并监视它的任何变化。
您不需要在此函数中将范围变量分配给自身,因为ng-model
将更新变量。在你的情况下,你正在比较旧与新。如果您需要对旧值执行某些操作(如果new太大/超出应用程序范围,则将值重新设置为old),这非常有用。
没有完整的代码图片,我可以在这里尽可能多地提供帮助。
您还可以尝试使用ng-change方法对更改执行某些操作:
Angular的ng-change
在每次变化后开火。您可以利用debounce
来区分变化事件,直到设定的持续时间。这将允许您暂停事件触发,直到说某人通常会完成输入。
将以下内容作为附加属性添加到input元素中。另外,确保您的输入通过ng-model="yourScopeVariable"
绑定到Angular变量
例:
ng-model-options="{ debounce: 1000 }"
1000
是ms的时间。 1000 = 1秒。
然后,您将构建您的更改函数并将调用添加到输入中,如下所示:ng-change="changeFunc(canPassParams)"
没有更多信息,这是我可以提供的建议的范围。希望你找到解决方案。