gpt4 book ai didi

javascript - angularjs过滤器过滤器在 Controller /工厂中的顺序

转载 作者:行者123 更新时间:2023-12-02 15:35:31 25 4
gpt4 key购买 nike

我有以下工厂:

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包含一个对象列表,这些对象中有一个字段num_used

如您所见,我创建了一个名为 getMostUsed 的函数,该函数需要返回 moduleList,但按字段 num_used desc 排序.

但是我不太确定如何使用 filterFilter 来实现此目的,我知道我可以只使用 array.sort() 但我希望使用 Angular 函数是否可能?

有人能指出我正确的方向吗?

最佳答案

假设 filterFilter 是您在应用程序中某处定义的过滤器,您可以像这样在 Controller /工厂中调用它。

导入 Angular $filter服务。

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

当您需要它时,您可以请求您的过滤器并像这样调用它:

 $filter("filterFilter")(moduleList);

更多信息可在 $filter 服务的 Angular 文档页面上获取 here .

如果您想要按给定属性对 moduleList 进行排序,则应使用 orderBy 过滤器。

this.getList().then(function(moduleList) {
$filter('orderBy')(moduleList, '-num_used'); // order descending by the num_used property
})

有关 orderBy 过滤器的更多信息,请访问 here .

关于javascript - angularjs过滤器过滤器在 Controller /工厂中的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32975633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com