我有一个包含复选框的表格。它有一个选择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
即使我使用了全部选择
,我也需要启用删除按钮答案 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}。得到错误!
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;