2017-03-17 7 views
0

2つのフィルタを使用してテーブルを作成しています。最初は "360"です - テーブルでクリックすると360だけ表示され、同じ作品は "2D"をフィルタリングします - 表でクリックすると2Dのみ表示されます。私はJSでこれを行いますが、私がしたいのは、 "360"をクリックするとテーブルに360だけが表示されますが、この時点で "2D"をクリックすると "360"がチェックされません。私はラジオボタンでこれをやろうとしますが、私のCSSのチェックボックスはうまくいきません。2番目をクリックして最初のフィルタをオフにします。

JSON "件のデータ":

[{"type":"2D"},{"type":"2D"},{"type":"360"},{"type":"2D"},{"type":"360"},{"type":"2D"},{"type":"360"},{"type":"2D"},{"type":"360"},{"type":"2D"}] 

マイHTML:

 <div class="form-group" style="display:block;width:40px;padding-left: 5px;float:left;height:70px;"> 
      <input type="checkbox" id='checkbox-360' class='tags-checkbox sr-only' value="" ng-model="type2.type360"><label for='checkbox-360'> 
      <i class='glyphicon glyphicon-unchecked' style="color:darkgrey;width:2px;font-size:25px;"></i> 
      <i class='glyphicon glyphicon-check' style="color:cornflowerblue;width:2px;font-size:25px;"></i> 
      <h4><small>360</small></h4> 
     </label> 
     </div> 
     <div class="form-group" style="display:block;width:40px;padding-left:5px;float:left;height:70px;"> 
      <input type="checkbox" id='checkbox-20' class='tags-checkbox sr-only' value="" ng-model="type1.type2D"><label for='checkbox-20'> 
      <i class='glyphicon glyphicon-unchecked' style="color:darkgrey;width:2px;font-size:25px;"></i> 
      <i class='glyphicon glyphicon-check' style="color:cornflowerblue;width:2px;font-size:25px;"></i> 
      <h4><small>2D</small></h4> 
     </label> 
     </div> 

    <tr ng-repeat="data in datas |TypeFilter360:type2.type360 | TypeFilter2D:type1.type2D> 
        <td>{{data.type}}</td> 
</tr> 

CSS:

input[type='checkbox'].tags-checkbox:checked + label > i:first-of-type, 
input[type='checkbox'].tags-checkbox + label > i:last-of-type{ 
    display: none; 
} 
input[type='checkbox'].tags-checkbox:checked + label > i:last-of-type{ 
    display: inline-block; 
} 

JS

var app = angular.module('app', []); 
    app.service('service', function($http, $q){ 
     this.getDatas = function() { 
      var datas = $http.get('datas.json', {cache: false}); 
      return $q.all({datas}); 
     }; 
    }); 
    app.controller('FirstCtrl', function($scope, service, $http) { 

      var promise = service.getDatas(); 
      promise.then(function (data) { 
       $scope.datas = data.datas.data; 
       console.log($scope.datas); 
      }) 
}) 
    .filter('TypeFilter2D', function(){ 
      return function(data, type2D){ 
       if (!type2D) return data; 
       var filtered2D = []; 
       angular.forEach(data, function(item){ 
        if(type2D == false) { 
         filtered2D.push(item); 
        } 
        else if(type2D == true && item.type == "2D"){ 
         filtered2D.push(item); 
        } 
       }); 

       return filtered2D; 
      }; 
     }) 
     .filter('TypeFilter360', function(){ 
      return function(data, type360){ 
       if (!type360) return data; 
       var filtered360 = []; 
       angular.forEach(data, function(item){ 
        if(type360 == false) { 
         filtered360.push(item); 
        } 
        else if(type360 == true && item.type == "360"){ 
         filtered360.push(item); 
        } 
       }); 

       return filtered360; 
      }; 
     }) 

「360」フィルターをクリックした後、「2D」フィルターをクリックすると「360」のチェックを外す必要があります。 事前にお返事ありがとうございます!

答えて

関連する問題