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

时间:2016-10-19 11:36:41

标签: javascript angularjs

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

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

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

3 个答案:

答案 0 :(得分:1)

使用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');
 }
 }]);

答案 1 :(得分:0)

如果您进一步详细说明问题,将会很有帮助。

基本上这种情况正常。

<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>

答案 2 :(得分:0)

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

  • 示例(将触发一次)
  • example @(不会开火)
  • example @ a(将再次触发)
  • example @ a。 (不会触发)
  • example@a.c(将再次触发)

希望有帮助:)