2017-07-03 262 views
0

我在默认选中项目时遇到问题。默认复选框正在工作,但是当我按下一个按钮来显示所有选中的项目时,默认检查并未显示(它们显示为未选中状态),但是如果我取消选中它并再次检查它,那么它就可以工作。我无法找到问题,这是我的代码:默认选中的复选框未显示在结果中

<ion-checkbox value="{{godina['title']}}" style="width: 200px;margin: 0 auto;" ng-model="checkItems[godina['title']]" ng-click="print()" ng-checked="godina.checked" ng-repeat="godina in godine">{{godina["title"]}}</ion-checkbox> 

JS:

$scope.godine = [ 
        { id: 'Duh', title: '0',checked : false }, 
        { id: 'Duh2', title: '1',checked : false }, 
        { id: 'Duh3', title: '2',checked : true}, 
      ] 

这是JS的所有检查项目:

var array = []; 
for (i in $scope.checkItems) { 
    alert($scope.checkItems[i]); 
    if ($scope.checkItems[i] == true) { 
     array.push(i); 
    } 
} 

什么我我做错了?

+0

你可以发布代码按钮点击和相应的JS? – Vivz

回答

1

你并不需要一个ng-model跟踪复选框的值。你可以做的是,通过传递整个对象作为ng-click的函数参数,然后检查是否已经选择了该对象,只需跟踪ng-click事件上的选定复选框。如果没有选择对象(复选框),则在选中的复选框数组上按下此对象。但是如果已经选择了它,只需从选定的数组中删除它。这里是工作正常

<ion-checkbox type='checkbox' value="{{godina['title']}}" ng-click="print(godina)" ng-checked="godina.checked" ng-repeat="godina in godine">{{godina["title"]}}</ion-checkbox> 

控制器代码

$scope.checkItems = []; 
    $scope.godine = [ 
     { id: 'Duh', title: '0',checked : false }, 
     { id: 'Duh2', title: '1',checked : false }, 
     { id: 'Duh3', title: '2',checked : true}, 
    ]; 
    angular.forEach($scope.godine, function(value, key){ 
     if(value.checked){ 
     $scope.checkItems.push(value); 
     } 
    }); 


    $scope.print = function(godina){ 
    var idx = $scope.checkItems.indexOf(godina); 

    // Is currently selected 
    if (idx > -1) { 
     $scope.checkItems.splice(idx, 1); 
    } 

    // Is newly selected 
    else { 
     $scope.checkItems.push(godina); 
    } 
    console.log($scope.checkItems); 
    } 

注意,循环的代码。它用于推动选择阵列中的已选对象$scope.checkItems

为了您的简单。这里是链接到JSFIDDLE

+0

谢谢,但结果是一样的。当我打开页面时,会检查默认项目。但如果我没有按任何东西,并且如果我按保存选中的项目,结果将是一个空白数组。 – fvukovic

+0

不,它不会是空白数组。点击保存时,检查该函数内的$ scope.checkItems的值。您将获取在加载页面时选择的默认值的对象。检查这个jsfiddle http://jsfiddle.net/j0bfe16q/。打开浏览器控制台并查看。你会在那里看到默认值。 –

+0

哦,它的工作原理!谢谢你,我是新的角度,当我失去2-3小时这样的事情..uf ..再次感谢你:D – fvukovic

0

变化NG-模型值和删除NG-检查

<ion-checkbox value="{{godina['title']}}" style="width: 200px;margin: 0 auto;" 
ng-model="godina.checked" ng-click="print()" ng-repeat="godina in godine"> 
{{godina["title"]}}</ion-checkbox> 
相关问题