gpt4 book ai didi

javascript - 我怎样才能列出可用的过滤器

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:46 25 4
gpt4 key购买 nike

我有一个场景,我希望用户能够选择要应用的过滤器。我不想在 html 中维护单独的过滤器列表。因此,考虑以下代码,我试图访问已注册过滤器的名称。 (我是 AngularJS 的新手,如果这很明显,我深表歉意)

angular.module('app.filters', []);

angular.module('app.filters').filter('filter1', function() {/* filter code */});

angular.module('app.filters').filter('filter2', function() {/* another filter code */});

angular.module('app', ['app.filters']);

angular.module('app').controller('MainCtrl', function ($scope, $filter) {

/* How do I list filter1 and filter2 in here so that they can be output
in a template? The below means the filter names are recorded twice */

$scope.availableFilters = ['filter1', 'filter2']
});

最佳答案

我想没有办法做到这一点。但是,如果您在 $filterProvider 中 Hook ,则可以获得此信息:

.config(function($filterProvider, $provide) {
// keep the original register fucntion
var registerFn = $filterProvider.register;
// array with all filters
var allFilters = [];

// replace the register function with our own implementation
$filterProvider.register = function(name, fn){
// save the name in the array
allFilters.push(name);
// call the original function
registerFn(name, fn);
}

// register a value to retrieve the filters
$provide.value('filters', allFilters);

})

filters 值现在可以通过注入(inject)在您的 Controller 中使用:

.controller('MainCtrl', function(filters){
// outputs an array with all known filters
console.log(filters);
})

关于javascript - 我怎样才能列出可用的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21672985/

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