0

我在一个 html 页面中有多个表单,每个表单都执行一些操作,如添加、编辑。

每个表单都有 ng-disabled 指令,用于检查某些条件,并在发生某些更改时触发相应的 ng-disabled 函数。

问题是当一个表单更改值时,它会触发每个表单的所有 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");
  }

});

链接

您可以在控制台中看到它在模型之一更改时运行所有功能。

4

1 回答 1

0

我认为这是一种正常的行为。每次模型更改时,都会重新执行 ng-disabled 中的条件。因此,console.log每次在输入中输入内容时都会得到 2。然后,如果你的函数返回为真,它会禁用你的组件,否则它会启用它。

于 2016-04-28T11:02:16.137 回答