在页面加载时,我检查了几个复选框。使用以下代码
<li ng-repeat="template in alltest" >
<input type="checkbox" name="template" ng-model="template.isselected" value="{{template.id}}" id="{{template.id}}" ng-checked="isChecked(template.id)">
<label for="{{template.id}}" class="position-relative"><span></span>
</label>
</li>
isChecked功能
$scope.isChecked = function(id){
var match = false;
if($scope.alltest!=null)
{
for(var i=0 ; i < $scope.alltest.length; i++) {
if($scope.alltest[i].tmp_id == id){
match = true;
}
}
}
return match;
};
当我点击按钮获取这些复选框时,则没有获得这些复选框
angular.forEach($scope.alltest, function(template){
if (template.isselected)
{
alert(template.id)
}
})
如果我再次取消选中这些复选框并再次选择然后我得到值..但在页面加载默认情况下几个复选框带有true选项,直接我点击提交按钮然后没有得到那些选中复选框< / p>
这段代码有什么问题?请帮我解决这个问题
答案 0 :(得分:0)
ng-model是免费的未定义。选中复选框时,ng-model创建属性。这就是为什么你在表单提交时只选中复选框。您还需要在isChecked函数
中定义false复选框ng-checked="isChecked(template.id, $index)">
JS
$scope.isChecked = function(id, index) {
var match = false;
if ($scope.alltest != null) {
for (var i = 0; i < $scope.alltest.length; i++) {
if ($scope.alltest[i].tmp_id == id) {
match = true;
}
}
}
if (!match) $scope.alltest[index].isselected = false
return match;
};