2015-07-20 97 views
0

我正在嘗試使用angularjs將分頁應用於分頁。angularjs分頁的自定義過濾器

該條件從函數GetParameterVisibility(x)返回。

這是我有:

dir-paginate="x in itemsToDisplay | orderBy:'Name' | filter:textFilter | itemsPerPage: pageSize" 

我想什麼做的是一種基於布爾過濾器從函數返回,也可以申請所示的項目文本過濾器。

我該如何應用這個附加條件,該條件也適用於文本過濾器。

例如

dir-paginate="x in itemsToDisplay | orderBy:'Name' | filter:(textFilter || GetParameterVisibility(x)) | itemsPerPage: pageSize" 

在此先感謝!

回答

0

創建過濾器,做你的函數處理,你的應用程序模塊:

.filter('fvisible', ['myService',function(myService) { 
    return function(input) { 
    return myService.GetParameterVisibility(input);//or any logic with this 
    }; 
}]); 

然後你鏈過濾器,因爲訂單是很重要的,並且從過濾一個過濾器的數據轉移到另一個過濾器。

| filter:textFilter | filter:fvisible | 

帶過濾器鏈接,你可以有帶過濾器的語句。我不確定你想要基於bool返回什麼,但這是你如何創建自己的過濾器來處理它。 你也必須注入getVisibility函數,所以你可以用這個函數創建服務,並注入來過濾fvisible。

.service('myService',function(){ 
this.GetParameterVisibility = function(){ 
     // 
}; 
}); 
+0

感謝您的文章!我已經加入過濾器,服務於我的angularjs控制器。我在過濾器和服務的開始處得到了「。」的語法錯誤。我在哪裏添加了這個代碼? – ee0jmt

+0

angular.module('formularzeApp') .filter('x',function(){。 ...})。service('y',function(){});你通過鏈接返回模塊方法後添加它 – cyan

+0

青色,越來越近,但仍然無法正常工作。多一點幫助! – ee0jmt

0

青色,感謝您的幫助我想我快到了。 (在我的防守,我通常寫C#代碼)

我現在有這樣的:

<div class="DataItem" dir-paginate="x in itemsToDisplay | orderBy:'Name' | filter:textFilter | filter:fvisible | itemsPerPage: pageSize" current-page="currentPage"> 



    var app = angular.module('parametersApp', ['angularUtils.directives.dirPagination']); 
     app.controller('parametersController', function ($scope, $http) { //Code }); 


angular.module('parametersApp').filter('fvisible', ['myService', function (myService) { 
      return function (input) { 
       return myService.GetParameterVisibility(input); 
      }; 
     }]).service('myService', function() { 
      this.GetParameterVisibility = function (parameter) { 

       if ($('#chkInAlert').is(':checked')) { 
        if (parameter.AlertPriority > 0) { 
         return true; 
        } 
        else { 
         return false; 
        } 

       } 
       else { 
        return true; 
       } 

      }; 
     }); 

不會引起這是一個意外收穫任何錯誤,但它似乎沒有任何工作。

的一個問題是它是如何在對象x傳遞到從我的DIR-PAGINATE在itemsToDisplay =「X的GetParameterVisibility功能..

+0

將angular.module('parametersApp')。filter更改爲app.filter和('parametersController',function($ scope,$ http){// Code}); to('parametersController',['$ scope','$ http',function($ scope,$ http){// Code}]); – cyan

+0

感謝您的幫助青色。我已經放棄了,現在在分配要顯示的對象數組之前應用過濾。 – ee0jmt

+0

你如何確定知名度?對象中的指定值是真/假還是始終爲真或假? – cyan

相關問題