2

私のフォームには 5 つのテキスト ボックスがあり、テキスト ボックスの内容が変更されたときに ng-change をトリガーしたいと考えています。 ng-change をグローバルに、つまり form タグに書き込むため、フォーム内のテキスト ボックスの内容が ng-change の対応する機能をトリガーする必要があります

誰でも私を助けてください.....

4

3 に答える 3

2

モデルのその部分に $watch 式を作成します。$watchのドキュメントを参照してください。

于 2013-07-14T17:34:06.660 に答える
1

最も簡単な方法は $watch であるという marko に同意します。

$scope.$watch('area1 + area2 + area3 + area4 + area5', function (newVal, oldVal) {
  if(oldVal && newVal !== oldVal) {
    console.log('Changed')
  }
});

こちらがプランカー

于 2013-07-14T20:04:37.863 に答える
0

何百もの入力を持つグリッドがあり、入力が動的であり、入力が変更された後にデータを自動保存する必要がある場合と同様のケースがあります

onChangeラッパー本体にバニラを使用し、ターゲット値を確認しました。

<div class="wrapper" onchange="onChangeHanler(event)">
   <input ng-repeat="item in items" ng-model="item.value">
</div> 

私のコントローラーで:

angular.controller('gridController', function($scope) {         

   // this method belongs to window and not the current $scope, remember we are breaking ng rules here :(
   window.onChangeHandler = function(ev) {  
      console.log(ev.target.value) // print out the value changed                
      queueForAutoSave($scope.items);
   }     
})

PS。

反対票を投じた人私は、これがこれを実装する最良の方法ではないことを知っています。これは、角度の基準に反対し、単体テストなどに問題を引き起こすためです...しかし、今のところ、パフォーマンスの場合、ng-change何百もの入力をバインドするよりも100倍優れています

于 2016-05-07T07:11:53.307 に答える