私のフォームには 5 つのテキスト ボックスがあり、テキスト ボックスの内容が変更されたときに ng-change をトリガーしたいと考えています。 ng-change をグローバルに、つまり form タグに書き込むため、フォーム内のテキスト ボックスの内容が ng-change の対応する機能をトリガーする必要があります
誰でも私を助けてください.....
私のフォームには 5 つのテキスト ボックスがあり、テキスト ボックスの内容が変更されたときに ng-change をトリガーしたいと考えています。 ng-change をグローバルに、つまり form タグに書き込むため、フォーム内のテキスト ボックスの内容が ng-change の対応する機能をトリガーする必要があります
誰でも私を助けてください.....
モデルのその部分に $watch 式を作成します。$watchのドキュメントを参照してください。
最も簡単な方法は $watch であるという marko に同意します。
$scope.$watch('area1 + area2 + area3 + area4 + area5', function (newVal, oldVal) {
if(oldVal && newVal !== oldVal) {
console.log('Changed')
}
});
こちらがプランカー
何百もの入力を持つグリッドがあり、入力が動的であり、入力が変更された後にデータを自動保存する必要がある場合と同様のケースがあります
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);
}
})
反対票を投じた人私は、これがこれを実装する最良の方法ではないことを知っています。これは、角度の基準に反対し、単体テストなどに問題を引き起こすためです...しかし、今のところ、パフォーマンスの場合、ng-change
何百もの入力をバインドするよりも100倍優れています