【问题标题】:ng-grid: trigger a new search from select fieldng-grid:从选择字段触发新搜索
【发布时间】:2015-01-26 22:28:32
【问题描述】:

我正在创建一个搜索输入,它将搜索 ng-grid 中的各个字段/列。 (是的,我知道 ng-grid 有自己的方法。)

我的搜索工作正常,我可以搜索单个字段,但我似乎无法弄清楚如何在从下拉列表中选择新字段时重新触发搜索。

所以:用户在“名称”字段中搜索“blah”,并得到一些结果。 然后用户决定搜索“年龄”字段。 搜索应该立即返回任何在“年龄”字段中包含“blah”的记录。

这是我的笨蛋: http://plnkr.co/edit/Ryjp2ugmYWHcfvNdD7OZ?p=preview

(尝试在姓名字段中搜索“ni”,然后在年龄字段中搜索。理想情况下,我想搜索姓名以获取莫罗尼,然后搜索年龄以获取二十九)。您可以搜索任何字段 - 只要您首先选择字段 - 在输入某些搜索文本后更改字段不起作用。事实上,我似乎根本无法清除搜索。

这部分是我重新触发网格渲染的笨拙尝试,但我不知道'grid'和'$gridScope'来自哪里:

  $scope.reSearch = function(){
    $scope.gridInit(grid, $gridScope);
  };

(你可以看到我正在使用gridInit。我的页面非常复杂,所以我无法像我一样简化plunker。)

【问题讨论】:

    标签: angularjs ng-grid


    【解决方案1】:

    我将您的代码推进到 reSearch 再次成功调用 gridInit 的程度: http://plnkr.co/edit/28bF6QBdRtfywA0YmUoV?p=preview

    但是,在这一行中,您正在丢弃您的原始数据,因此当您再次搜索时,您只会搜索上次搜索的结果:

                $scope.myData = grid.filteredRows;
    

    【讨论】:

    • 谢谢,尽管删除该行意味着网格根本不会更新。我一定是做错了什么。
    • 您需要保存原始数据的副本以进行搜索。我更新了 plunker 给你看。
    • 恐怕我看不出你有什么改变。
    • 抱歉,我看到了第二个数据集。不确定我是否跟随。我将如何实现这是一个 ajax-y 环境?这不是在做什么吗? $scope.myData = grid.filteredRows;
    • 在真实环境中,我建议不要复制数据集,而是进行深度克隆(您可以为此使用 lodash 之类的东西)并将克隆分配给搜索数据。您在此行中所做的 $scope.myData = grid.filteredRows;正在破坏您的原始数据。此时,myData 仅包含您的搜索结果,并且您没有任何东西可以包含要搜索的完整数据集。在我的 plunker 中查找 mySearchData,看看我是如何在您的过滤功能中使用它的。
    猜你喜欢
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 2017-12-19
    • 2022-06-27
    相关资源
    最近更新 更多