2015-08-06 5 views
0

Я новичок в угловых js. МОЯ Шаблон:Получить все отмеченные флажки в угловых js

<div class="inputField"> 
    <h1>Categories</h1> 
    <div> 
     <label><input type="checkbox" id="all" ng-model="all" ng-change="checkAll();" ng-true-value="1">All Cuisines</label> 
     <label ng-repeat="category in categories"> 
      <input type="checkbox" ng-checked="all" ng-model="filter.cats[category.id]" ng-change="SingleCheck(category.id);" value="category.id">{{category.category_name}} 
     </label> 
    </div> 

</div> 

<div class="clear"></div> 
<a href="javascript:void(0)" class="fRight greenBtn" ng-click="ApplyFilter();">Apply</a> 

Контроллер:

App.controller("FilterRestCtrl",function($scope,basic,stateList){ 
    // stateList.autoFill(); 
    var home_data = { 
     requestFor: "cate_states" 
    } 
    $scope.filter = { 
     cats: [] 
    }; 
    basic.hitAPI(basic.defaultVal.sitePath + "getCategoryAndStates", {reqObject: JSON.stringify(home_data)}).success(function (response) { 
     if (response.type == "success") { 
      $scope.imagePath = basic.defaultVal.imagePath; 
      $scope.home_data = response; 
      $scope.categories= response.all_categories; 
     }else if (response.type == "error") { 
      basic.messages.showErrorMessage(response.message); 
     }else { 
      basic.messages.showErrorMessage("Oops... Something went wrong .. please try again"); 
     } 
    }); 
    $scope.checkAll = function() { 
     if($scope.all == 1){ 
      $scope.filter.cats = $scope.categories.map(function(item){ return item.id;}); 
     }else{ 
      $scope.filter.cats = []; 
     } 
    }; 
    $scope.ApplyFilter = function() { 
     console.log($scope.filter.cats); 
    }; 
    $scope.SingleCheck = function($cat){ 
     $scope.filter.cats.push($cat); 
    } 

}); 

Прежде всего. Я хочу, чтобы все флажки были отмечены всеми щелчками на первом флажке. Он отлично работает после этой проверки, когда я нажимаю «Применить», затем возвращает пустой массив. но я хочу проверить значения. Если я нажму на checkboes, а затем нажмите Apply, тогда он будет работать нормально. то почему он не работает на всех выбранных флажках. я wanr результат:

["48", "34", "50", "33", "35", "47", "36", "45", "49", "46", "44", "43", "42", "31", "37", "41", "38"] 

ответ

0

изменить ваш checkAll функции в данной получил наложенным слоем пустой массив как-то, потому что if($scope.all == 1) это не вычисляемая true.

$scope.checkAll = function() { 
    if($scope.all){ 
        $scope.filter.cats = $scope.categories.map(function(item){ return item.id;}); 
    }else{ 
      $scope.filter.cats = []; 
    } 
    console.log($scope.filter.cats) //verify this log if its populated correctly 
}; 

, если это не работает, проверьте значение $scope.all внутри checkAll функций

+0

Its работает нормально .. но когда я нажимаю на любом perticular флажка .. тогда все будет коллажами. – Jitendra