AngularJS中的启用/禁用按钮

时间:2017-09-29 02:42:11

标签: javascript html angularjs disabled-input

我有一个包含复选框的表格。它有一个选择ALL javascript函数和一个选择的逐个函数。我的html文件对于删除按钮看起来像这样:

<button data-toggle="modal" data-target="#rejectModal" contenteditable="false" id="delbutton" ng-model="delbutton" ng-disabled="countChecked() == 0">Delete</span></button>

选择所有复选框:

<th class="">
    <input type="checkbox" name="select" id="checkAll" ng-model="selectAllRawSCP"/>
</th>

表格详情:

<tr ng-repeat=" item in rawSCAP | orderBy:sort">
   <td>
        <input type="checkbox" name="select" value="checked" ng-model="item.checked"/>
    </td>

如果没有选中复选框,我使用了我在堆栈溢出中的一个答案中看到的代码来禁用删除按钮。它看起来像这样:

$scope.countChecked = function(){
            var count = 0;
            angular.forEach($scope.rawSCAP, function(value){
                if (value.checked) count++;
            });

            return count;
        }

但是使用它,我的页面返回一个错误,该错误是类错误:无法读取属性&#39;已检查&#39;为null Error

即使我使用了全部选择

,我也需要启用删除按钮

2 个答案:

答案 0 :(得分:0)

错误很明显,它无法访问rawSCAP itens的属性已检查。在尝试在ng-model中使用它之前,您必须保证rawSCAP itens checked属性不为null。

您可以尝试使用您想要的某些值来初始化它。检查this如何操作。

答案 1 :(得分:0)

使用<<ng-model>>.checked需要遵循一些条件,普通数据不能用于复选框,它必须是 { {1}} 即可。另外请将您的功能更改为以下内容。

array of objects

执行工作的主线是 $scope.countChecked = function() { var count = 0; angular.forEach($scope.rawSCAP, function(value) { value.checked = value.checked || 0; if (value.checked) count++; }); return count; } 如果value.checked = value.checked || 0;未定义,则value.checked将被分配到0,因此您赢了&#39}。得到错误!

&#13;
&#13;
value.checked
&#13;
var app = angular.module('myApp', []);

app.controller('MyController', function MyController($scope) {
  $scope.rawSCAP = [{
    item: 1
  }, {
    item: 2
  }, {
    item: 3
  }, {
    item: 4
  }, {
    item: 5
  }, {
    item: 6
  }, {
    item: 7
  }];

  $scope.countChecked = function() {
    var count = 0;
    angular.forEach($scope.rawSCAP, function(value) {
    	value.checked = value.checked || 0;
      if (value.checked) count++;
    });

    return count;
  }

});
&#13;
&#13;
&#13;