没有在按钮单击和加载页面上获得多个选中的复选框:ionic

时间:2016-05-27 11:53:56

标签: angularjs ionic-framework

在页面加载时,我检查了几个复选框。使用以下代码

 <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>

这段代码有什么问题?请帮我解决这个问题

1 个答案:

答案 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;
};