2017-01-12 11 views
0

私は整数の配列を受け取るフィルタ1が必要です。フィールドタイプのカスタムフィルタ配列を選択

<select class="form-control" 
          ng-model="vm.data.form.idService" 
          ng-options="service.idService as 
          service.title for service in vm.data.services 
          | filter: {active: 'true'} 
          | inArray:vm.data.form.servicesIds:'idService'"></select> 

私のカスタムフィルタは次のとおりです。{{11,12}}が、動作していない:

angular.module('mainApp').filter('inArray', function($filter){ 
    return function(list, arrayFilter, element){ 
     if(arrayFilter){ 
      return $filter("filter")(list, function (listItem) { 
       for (var i = 0; i < arrayFilter.length; i++) { 
        debugger; 
        if (arrayFilter[i][element] == listItem[element]){ 
         return true; 
        }else{ 
         return false; 
        } 
       } 
       return true; 
      }); 
     } 
    }; 

のvar vm.data.form.servicesIds結果があります。

このフィルタの目的は、T-SQLのように配列し、フィルタを受信する:

SELECT * FROM SERVICES WHERE IdService in (11,12) 

ERROはこれです:

angular.js:13550 Error: [$injector:unpr] Unknown provider: inArrayFilterProvider <- inArrayFilter 
http://errors.angularjs.org/1.5.5/$injector/unpr?p0=inArrayFilterProvider%20%3C-NaNnArrayFilter 
    at http://localhost/Gvisa.Web/assets/lib/angular.js:68:12 
    at http://localhost/Gvisa.Web/assets/lib/angular.js:4458:19 
    at Object.getService [as get] (http://localhost/Gvisa.Web/assets/lib/angular.js:4611:39) 
    at http://localhost/Gvisa.Web/assets/lib/angular.js:4463:45 
    at Object.getService [as get] (http://localhost/Gvisa.Web/assets/lib/angular.js:4611:39) 
    at http://localhost/Gvisa.Web/assets/lib/angular.js:19531:24 
    at isStateless (http://localhost/Gvisa.Web/assets/lib/angular.js:14236:12) 
    at findConstantAndWatchExpressions (http://localhost/Gvisa.Web/assets/lib/angular.js:14293:33) 
    at http://localhost/Gvisa.Web/assets/lib/angular.js:14247:7 
    at forEach (http://localhost/Gvisa.Web/assets/lib/angular.js:322:20) 
(anonymous) @ angular.js:13550 

は、事前に

+0

ありがとうございましたセミコロンは、この有効な構文です解く: "()" Julo0sS @ – Julo0sS

+0

はありません間違っています? –

答えて

0

理由をありがとうここに$ filterを注入していますか?

angular.module('mainApp').filter('inArray', function($filter){ 

必須ではありません。 ちょうど私はあなたが、私は単純な配列を持つオブジェクトを比較した

}); 
0

のようにそれを維持します。

そして

angular.module('mainApp').filter('inArray', function($filter){ 
    return function(list, arrayFilter, element){ 
     if(arrayFilter){ 
      return $filter("filter")(list, function(listItem){ 
       for (var i = 0; i < arrayFilter.length; i++) { 
        debugger; 
        if (arrayFilter[i] == listItem[element]) 
         return true; 
       } 
       return false; 
      }); 
     } 
    }; 
}); 

0

あなたのフィルターの最後の行に括弧が欠けていると思う

angular.module('mainApp').filter('inArray', function(){