将URL的一部分传递给AngularJS中的自定义筛选器

Pass part of the URL to a custom filter in AngularJS

本文关键字:自定义 筛选 AngularJS URL 一部分      更新时间:2023-09-26

我有一个JSON数据库,我用一个控制器和ng repeat显示其中的内容。

它工作得很好。

在列表中,我有属于多个类别的项目。

我构建了一个自定义过滤器,只显示符合条件的内容。

app.filter('whichCategory', function($location){
    return function(input) {
        var out = [];   
        var path = $location.path();
        var pos = path.lastIndexOf("/");
        var categoryName = path.slice(-pos);
        angular.forEach(input, function(items) {
            if (items.category == categoryName) {
                out.push(recipes);
            }
        })
        return out;
    }
});

该过滤器与静态条件甚至categoryName一起工作也很好,但在这种情况下,无论url如何,它都只显示一个类别中的元素。

你知道我错在哪里了吗?

与此同时,我做了一些调试,问题是在告诉splice从哪一侧剪切时,pos变量的实现。

我从右向左走,而不是从另一个方向走。

printf调试有帮助:D。

var categoryName = path.slice(pos+1);

因为最后一个"/"字符的位置是从左起的第11个。

我需要最后一个"/"之后的所有内容,因此+1