【问题标题】:ng-table, ng-repeat, filter works only for the current page, in a paginated tableng-table, ng-repeat, filter 仅适用于当前页面,在分页表中
【发布时间】:2016-08-30 05:44:10
【问题描述】:

我为我的 ng-table 实现了一个自定义过滤器,它使用 ngTagInput。 Link[1] 与我的代码类似,此过滤器仅适用于当前页面。 获取所有结果以在 ng-repeat 中过滤的正确方法是什么。


过滤器的代码 sn-p:

.filter('filterByTags', function () {
    return function (items, tags) {
        var i = 0;
        var filtered = []; // Put here only items that match
        (items || []).forEach(function (item) { // Check each item
            var matches = tags.some(function (tag) {          // If there is some tag
                i++;
                return (item.name.indexOf(tag.name) > -1)    // that is a substring
            });                                               // we have a match
            if (matches) {           // If it matches
                filtered.push(item); // put it into the `filtered` array
            }
        });
        if(i == 0){
            return items;
        }
        else{
            return filtered;
        }
    };
})

[1]Filter ngtagsinput in AngularJS

【问题讨论】:

    标签: javascript angularjs angularjs-ng-repeat ngtable


    【解决方案1】:

    我还遇到了过滤器仅在当前页面上工作的问题。原始问题不包含 HTML,只是指向类似代码的链接,所以我不确定我的解决方案是否适用于原始问题,但它可能会帮助其他人在分页和过滤方面苦苦挣扎。我的 HTML 看起来像这样,过滤前有分页:

    <tr ng-repeat="item in items | pages: myCtrl.currentPage : myCtrl.itemsPerPage | filter: searchCriteria">
    

    我更改了 HTML 以将过滤放在分页之前,然后过滤器对所有页面都起作用:

    <tr ng-repeat="item in items | filter: searchCriteria | pages: myCtrl.currentPage : myCtrl.itemsPerPage">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多