当前位置: 首页 > 面试题库 >

如何过滤我的数据?(ng-grid)

黄和怡
2023-03-14
问题内容

我认为这很可能非常简单,但是我找不到关于如何在其网站上显示的’filterText’之外添加过滤器的清晰文档。我想做的就是这样简单:

$scope.filterOptions = {
    filter: $scope.myFilter,  // <- How to do something like this? 
    useExternalFilter: true
}

$scope.gridOptions = {
        data: 'entries',
        enableColumnResize: false,
        multiSelect: false,
        enableSorting: false,
        selectedItems: $scope.selectedEntries,
        filterOptions: $scope.filterOptions
}

$scope.lowerLimit = 50;
// My Filter
$scope.myFilter = function(entry) { 
    if (entry < $scope.lowerLimit) {
        return false; 
    }
    return true;
 }

编辑:或者也许我可以以某种方式过滤数据源?我尝试了这个:

$scope.gridOptions = {
        data: 'entries | filter: myFilter',
        enableColumnResize: false,
        multiSelect: false,
        enableSorting: false,
        selectedItems: $scope.selectedEntries,
}

但这会引发很多错误。


问题答案:

我发现了一种即时更新的方法。基本上,我保留了所有数据的隐藏集,并且在接收到新数据或更改过滤器后-我将此过滤器应用于完整数据集,并将网格交给过滤后的版本。

这使我可以在过滤器中使用 比较器 (即年龄> = 50),这是此问题的目的。

// Full unfiltered data set
$scope.entries = []; // Updated and pushed to

$scope.gridOptions = {
    // The grids already filtered data set
    data: 'filteredEntries',
    enableColumnResize: false,
    multiSelect: false,
    enableSorting: false,
    selectedItems: $scope.selectedEntries,
}

 $scope.$on("updateEntries", function(data) {
     // My table is filled by socket pushes, this is where it is updated.
     $scope.updateFilters();
 }

 $scope.$on("newFilter", function(newFilter) {
     // This is where I update my filter
     $scope.updateFilters();
 }

 $scope.updateFilters = function() {
     // Filters the full set and hands the result to the grid. 
     $scope.filteredEntries = $filter('filter')($scope.entries, $scope.myFilter);
     $scope.$digest();
 }

 // A modifiable limit, modify through newFilter so data is refiltered
 $scope.lowerLimit = 50;

 // My Filter
 $scope.myFilter = function(entry) { 
     if (entry < $scope.lowerLimit) {
        return false; 
     }
     return true;
 }


 类似资料:
  • 问题内容: 我正在尝试通过键入日期范围来过滤包含时间戳的列表 例如: JSFIDDLE html javascript 我希望能够用值填充“发件人”字段:27-05-2010 并且“ To”字段的值为:29-07-2015 并仅获取该范围内的记录。 (示例中的第一条记录)。 谢谢分配阿维 问题答案: 您可以创建一个自定义过滤器来实现此目的。 JSFIDDLE html javascript 此外,

  • 问题内容: 使用该方法时,我正努力筛选返回的数据以准确获得所需的数据。我知道这很容易使用,可能还有其他jQuery AJAX方法,但是我需要专门使用。 例如,我知道这可行; 但是,如果我只想要id =“ foo”的div的内容怎么办? 理想情况下,我想要一个可以传递普通jQuery选择器的方法,该方法将用于选择标题,div或jQuery选择的任何其他元素。这样我可以将任何字符串传递到我自己的aja

  • 我试图子集一个熊猫DataFrame在python基于两个逻辑语句 即。 但是第3行的语法无效。 有没有一种方法可以在一行中完成?

  • 永远不要信任外部输入。请在使用外部输入前进行过滤和验证。filter_var()和 filter_input() 函数可以过滤文本并对格式进行校验(例如 email 地址)。 外部输入可以是任何东西:$_GET 和 $_POST 等表单输入数据,$_SERVER 超全局变量中的某些值,还有通过 fopen('php://input', 'r') 得到的 HTTP 请求体。记住,外部输入的定义并不局

  • 问题内容: 我正在运行一个简单的JSON文件,并希望获取类别名称。大约有100个对象,每个对象都属于一个类别-但是只有大约6个类别。 我当前的代码是这样的: 输出是100个不同的选项,大部分重复。我该如何使用Angular来检查a是否已经存在,如果已经存在则不创建选项? 编辑:在我的javascript中,只是为了澄清 问题答案: 您可以使用AngularUI 的 唯一 过滤器(此处提供源代码:A

  • 问题内容: 基本上,我有一个名为的结构,主题包含,以及一个标志(有关说明,请参见下面的屏幕截图)。 在应用程序中,我想过滤数据,仅显示具有的主题。 这就是我想要做的: 但这是行不通的。我应该如何处理?在此先感谢您的帮助。 问题答案: 您那里有一些小错误。总体来说还算不错,但是结合起来它们将永远无法正常工作: 调用任何方法都将返回一个新对象 您需要先过滤其价值 您需要遍历结果 结合这些: 我们会定期