Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在angular js智能表中按多个布尔属性筛选_Javascript_Angularjs_Smart Table - Fatal编程技术网

Javascript 在angular js智能表中按多个布尔属性筛选

Javascript 在angular js智能表中按多个布尔属性筛选,javascript,angularjs,smart-table,Javascript,Angularjs,Smart Table,我有以下情况: 指标列表,每个指标都有属性名称、描述、基本和差异 $scope.indicators = [ { name: 'indicator1' , description: 'blah1', essential: true, differential: false }, { name: 'indicator2' , description: 'blah2', essential: false, differential: true }, { name: 'indicator3

我有以下情况: 指标列表,每个指标都有属性名称、描述、基本和差异

$scope.indicators = [
  { name: 'indicator1' , description: 'blah1', essential: true, differential: false },
  { name: 'indicator2' , description: 'blah2', essential: false, differential: true },
  { name: 'indicator3' , description: 'blah3', essential: true, differential: true },
  { name: 'indicator4' , description: 'blah4', essential: false, differential: false }    
]
我希望能够通过选择以下组合进行过滤: “全部”、“基本”、“差异”、“基本和差异”、“既不基本也不差异”

我曾尝试在与|filter关联的ng repeat选择中使用ng model,但这破坏了分页

我想不出使用st search指令的方法,因为我正在过滤两个属性的组合

有人有什么建议吗

使用示例代码跟随plunker:


谢谢

我就是这样做的

在控制器中,使用可能的选项和每个选项的过滤器定义一个数组,如下所示:

     $scope.options = [
        {value:'All', filter:{}},
        {value:'Essential', filter:{essential:true}},
        {value:'Differential', filter:{differential:true}},
        {value:'Essential and Differential', filter:{differential:true, essential:true}},
        {value:'Neither Essential nor Differential', filter:{differential:false, essential:false}}
     ];
        <select ng-model='diffEssFilter' ng-options='option.value for option in options'>
        </select>
<tr ng-repeat="indicator in indicators | filter:diffEssFilter.filter">
然后在html中使用此数组声明选择,如下所示:

     $scope.options = [
        {value:'All', filter:{}},
        {value:'Essential', filter:{essential:true}},
        {value:'Differential', filter:{differential:true}},
        {value:'Essential and Differential', filter:{differential:true, essential:true}},
        {value:'Neither Essential nor Differential', filter:{differential:false, essential:false}}
     ];
        <select ng-model='diffEssFilter' ng-options='option.value for option in options'>
        </select>
<tr ng-repeat="indicator in indicators | filter:diffEssFilter.filter">
就这样


搜索是累积的,因此如果使用多个调用控制器api
search
,则可以添加谓词

只要确保在值更改时重置sortPredicate对象

展示了如何根据您的需求编写插件(尽管我不知道在这种情况下
all
是什么)

.directive('customSearch',function(){
return {
  restrict:'E',
  require:'^stTable',
  templateUrl:'template.html',
  scope:true,
  link:function(scope, element, attr, ctrl){
     var tableState=ctrl.tableState();
     scope.$watch('filterValue',function(value){
       if(value){
         //reset
         tableState.search.predicateObject ={};

         if(value==='essential'){
           ctrl.search('true', 'essential');
         } else if(value === 'differential'){
           ctrl.search('true', 'differential')
         } else if(value === 'both'){
           ctrl.search('true','essential');
           ctrl.search('true', 'differential');
         } else if(value === 'neither'){
            ctrl.search('false','essential');
            ctrl.search('false', 'differential');
         }
       }
     })
  }
};});

我想到了这一点,但在这个特定的情况下,这将不起作用,因为它会破坏智能表分页。当我不使用st search进行筛选时,页面计数似乎不会更新:/@t抱歉,我对“智能表”不是很熟悉,在plunker中,我设置的一切似乎都正常工作,所以我不太理解问题是,如果你想为我提供一个plunker,如果我能看到你的问题被复制,我会尽力帮助你解决这个问题。谢谢!谢谢@laurent!它像一个符咒一样工作,现在我明白了它是如何工作的!我可以从这里继续!如果一个人想在一个子集中的每一个道具上过滤怎么办。我正在尝试过滤m同时具有多个显式属性。