2015-10-06 26 views
0

我有以下工廠:angularjs filterfilter爲了通過在控制器/工廠

app.factory("ModuleFactory", function (api, $http, $q,filterFilter) { 
var moduleList = []; 
var categoryList = []; 
var moduleTypeList = []; 
var academyModuleTypeList = []; 
var mostUsed = []; 
var lastUpdated = null; 
return { 
    /** 
    * @description This function gets the entire module list for the given users organization. 
    * @author Marc Rasmussen 
    * @returns {d.promise} 
    */ 
    getList: function() { 
     var d = $q.defer(); 
     if (moduleList.length == 0) { 
      $http.get(api.getUrl('module', null)) 
       .success(function (response) { 
        moduleList = response; 
        lastUpdated = new Date(); 
        d.resolve(response); 
       }); 
     } 
     else { 
      d.resolve(moduleList); 
     } 
     return d.promise; 
    }, 
    getMostUsed: function() { 
     var d = $q.defer(); 
     if(moduleList.length <= 0){ 
      this.getList().then(function() { 

      }) 
     } 
    } 
} 
}); 

現在列表moduleList包含在這些對象objects列表有一個場num_used

正如你可以看到我創建了一個名爲getMostUsed的函數,該函數需要返回moduleList,但是按字段num_useddesc排序。

但是我不太清楚如何使用filterFilter爲此,我知道我可以只使用array.sort()但是如果可能的話,我希望使用angular函數嗎?

任何人都可以指向正確的方向嗎?

+0

什麼是filterFilter?您定義的過濾器的名稱? – toskv

回答

2

假設filterFilter是您在應用程序某處定義的過濾器,您可以像這樣在您的控制器/工廠中調用它。

導入角度$篩選器服務。

app.factory("ModuleFactory", function(api, $http, $q, $filter) {

而且當你需要它,你可以要求你的過濾器,並調用它像這樣:

$filter("filterFilter")(moduleList);

更多信息可在角文檔$ filter servic e here

如果你想要做什麼的,你應該使用排序依據過濾一個屬性是爲了你的moduleList

this.getList().then(function(moduleList) { 
 
    $filter('orderBy')(moduleList, '-num_used'); // order descending by the num_used property 
 
})
有關 排序依據過濾

更多信息,可以發現here

+0

@tovsky你可以舉一個例子,如果我們只使用$ filter的角度構建? –

+0

你的意思是稱爲** filter **的默認過濾器嗎? @MarcRasmussen – toskv

+0

@MarcRasmussen我添加了一個使用orderBy的例子,以降序排列模塊列表。我希望這就是你想要的。 :) – toskv