可排序的Angular数据表——可排序的表在第一次加载时呈现良好,但在后续过滤器中不产生记录

Sortable Angular Datatables - Fitlerable table renders fine on first load but produces no records on subsequent filters

本文关键字:排序 过滤器 记录 数据表 Angular 第一次 加载      更新时间:2023-09-26

我有一个数据集(在Angular datatable中呈现),我想显示按"filterTags"分类的项目。

每次我运行查询时,我需要首先根据fillertag获取新数据。

问题是,当我排序数据时,我一直获得初始filterTag名称作为过滤的标准,数据集没有更新。

我如何得到表响应时,单击顶部的两个过滤器标签按钮,如在柱塞看到?

表重复代码-数据集基于fillertag

ng-repeat="data in Data| filter:{ TagName: filterTag, TagId: filterId} | filter:searchText"

数据源获取函数

var getData= function(){
  $scope.Data= service.getData().query();
}

在访问

页面时调用getData()的代码
if(path == "/some/path"){
  getData();
}

编辑

请参见plunkr

https://plnkr.co/edit/Kzw3zO673ORPY1xlWw9p?p =

预览

到现在为止,我还不知道为什么

$scope.filterTag = "TYPE 1";

$scope.filterTag = "TYPE 2"; works

但是下面的调用在表中没有产生结果,在我的plunkr示例中显示的是空表。

  $scope.selectTag = function(tag){
    $scope.filterTag = tag;
}

升级到1.10.12(数据表)修复了这个问题。

//cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js

我还必须将过滤器更新为自定义过滤器,而不是像我在问题中所使用的内联过滤器。

  //Initial Value
$scope.filterTag = "TYPE 1";
$scope.dtInstance = {};
  $scope.filteredData = $scope.items.filter(function(r) {
    var tag = (typeof $scope.filterTag === undefined)? "TYPE 1"  : $scope.filterTag;
    var show = r.TagName == tag;
    return show;
});

 var update = function(){
  $scope.filteredData = $scope.items.filter(function(r) {
     var tag = (typeof $scope.filterTag === undefined)? "TYPE 1"  : $scope.filterTag;
    var show = r.TagName == tag;
    return show;
});
}

工作示例

https://plnkr.co/edit/NI6ixwlUT82s1MpBvMRg?p =预览