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