HTMLページに複数のフォームがあり、それぞれが追加、編集などの操作を実行します。
すべてのフォームには、いくつかの条件をチェックする ng-disabled ディレクティブがあり、いくつかの変更が発生したときに対応する ng-disabled 関数を起動します。
問題は、1 つのフォームで値を変更すると、すべてのフォームのすべての ng-disabled 関数が起動されることです。
コード :
<body ng-controller="MainCtrl">
<div ng-form="myForm">
<input type="text" required ng-model="user.name" placeholder="Username">
<button ng-click="doSomething()" ng-disabled="check() || myForm.$invalid">DO</button>
</div>
<div ng-form="myForm2">
<input type="text" required ng-model="user.name2" placeholder="Username">
<button ng-click="doSomething2()" ng-disabled="check2() || myForm2.$invalid">DO</button>
</div>
</body>
スクリプト コード:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.check = function() {
console.log("check called");
}
$scope.check2 = function() {
console.info("check two called");
}
});
モデルの1つが変更されると、コンソールですべての機能が実行されることがわかります。