我有以下工厂:
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_used
desc
排序。但是我不太确定该如何使用
filterFilter
,我知道我可以只使用array.sort()
,但是如果可能的话,我希望使用angular
函数?谁能指出我正确的方向?
最佳答案
假设filterFilter是您在应用程序中某个位置定义的过滤器,则可以像这样在控制器/工厂中调用它。
导入角度$ filter服务。
app.factory("ModuleFactory", function(api, $http, $q, $filter) {
并且当您需要它时,您可以请求过滤器并按如下方式调用它:
$filter("filterFilter")(moduleList);
有关更多信息,请参见角度文档页面上的$ filter服务here。
如果要通过给定属性对moduleList进行排序,则应使用orderBy过滤器。
this.getList().then(function(moduleList) {
$filter('orderBy')(moduleList, '-num_used'); // order descending by the num_used property
})
可以在here中找到有关orderBy过滤器的更多信息。
关于javascript - angularjs filterfilter在 Controller /工厂中订购,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32975633/