【问题标题】:$watch on input text is returning undefined输入文本上的 $watch 返回未定义
【发布时间】:2017-12-30 00:43:05
【问题描述】:

我正在尝试在输入文本中使用 $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);

【问题讨论】:

  • 使用ng-change 指令对输入做出反应。

标签: angularjs watch


【解决方案1】:

了解 $watch

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

上面的 watch 函数接受一个作用域变量 scopeVariable 并监视它的任何变化。

您不需要在此函数中将范围变量分配给自身,因为ng-model 将更新该变量。在您的情况下,您正在比较旧与新。如果您需要对旧值做一些事情,这很有用(如果新值太大/超出您的应用程序的范围,则将值重新设置为旧值)。

如果没有完整的代码图片,我可以在这里提供尽可能多的帮助。

你也可以尝试使用 ng-change 方法来做一些改变:

Angular 的 ng-change 在每次更改后都会触发。您可以利用debounce 来更改更改事件,直到设定的持续时间之后。这将允许您暂停事件触发,直到有人通常会完成输入。

将以下内容作为附加属性添加到您的输入元素中。此外,请确保您的输入通过ng-model="yourScopeVariable" 绑定到 Angular 变量

例子:

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

1000 是以毫秒为单位的时间。 1000 = 1 秒。

然后您将构建您的更改函数并将调用添加到输入中,如下所示:ng-change="changeFunc(canPassParams)"

如果没有更多信息,这就是我能提供的建议的范围。希望你找到解决办法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 2013-07-14
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    相关资源
    最近更新 更多