0
我在html頁面中有多個表單,每個表單執行一些操作,如添加,編輯。在一個表單中進行修改時,ng-disabled引發的所有表單驗證
每個表格都有ng-disabled指令,它檢查某些條件,並在發生某些更改時觸發相應的禁用ng函數。
問題是,當一個表單中的值發生改變時,它會觸發所有表單的禁用ng函數。
代碼:
<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>
Script代碼:
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");
}
});
你可以看到在控制檯運行所有功能時的一個模式的轉變。
爲什麼這是一個問題? Angular會在每個[摘要](https://www.ng-book.com/p/The-Digest-Loop-and-apply/)循環中檢查函數的值,以查看是否需要禁用該按鈕 – yarons