繁体   English   中英

Angularjs - ng-change 和 $scope.$watch 只触发一次

[英]Angularjs - ng-change and $scope.$watch fires only once

我已经在模型上尝试了 ng-change 和 $watch。 但是,它只会触发一次。 当输入的第一个字符被输入时。 或者当最后一个字符被删除时。 例如,当我输入第一个数字时,该函数被正确调用。 当我继续在输入中输入其他数字时,不会调用该函数。 就像输入是“1234”一样,当输入 1 时它会触发。 但是当输入 2 和 3 和 4 时,它不会被解雇。

删除时也会发生同样的事情。 当 4,3,2 被删除时,事件不会被触发。 当 1 被删除时,它会被解雇。

我在问之前确实搜索了论坛。 但是,我找不到任何有意义的答案。 它对 $digest 生命周期有什么影响吗?

使用 ng-keyup 事件,试试这个

<div ng-controller="test">

<input ng-model="a" ng-keyup="check()" />

</div>

  angular.module("myApp", [])
 .controller('test', ['$scope', function($scope){


   $scope.check = function(){
    alert('it changes');
 }
 }]);

如果您进一步详细说明您的问题,这将有所帮助。

基本上这个场景工作正常。

<div ng-controller="test">

<input ng-model="a" ng-change="check()" />

</div>

JS代码

angular.module("myApp", [])
.controller('test', ['$scope', function($scope){


  $scope.check = function(){
    alert('it changes');
  }
}]);


<div ng-controller="test">

<input ng-model="a" ng-change="check()" />

</div>

今天我遇到了同样的问题。 我不确定您的情况是否相同,但是,我的问题是我的输入类型是电子邮件,这会在输入的第一个字符时触发更改事件,然后在您输入 @ 后立即再次触发该事件字符串。 什么会触发更改事件:

  • 示例(将触发一次)
  • 示例@(不会触发)
  • example@a(将再次触发)
  • 例子@a。 (不会开火)
  • example@ac(将再次触发它)

希望有所帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM