首页 > 解决方案 > 如何以编程方式清除智能表中的搜索字段?

问题描述

我目前正在使用智能表,并且在每列的顶部都有输入文本框,并且正在使用 st-search。我所做的重点是从表格中选择一些东西,然后改变表格中的结果。

单击该行时,我试图清除搜索框。目前其他业务逻辑是在点击时实现的,所以此时我希望清除这些文本框。

我试图将 ng-model 与这些文本框相关联,并在单击该行但文本框不会更改时清除它们。我也用谷歌搜索了这个问题,我只找到了当你点击按钮(通过指令)清除谓词时如何使它工作的解决方案。但是,我无法使这些解决方案以编程方式工作。

标签: smart-table

解决方案


为了解决这个问题,我做了以下事情:

  1. 使用此 github 问题 ( https://github.com/lorenzofox3/Smart-Table/issues/164 )中的代码对 smarttable.js 进行猴子修补。对我来说,这发生在第 574 行附近。

    // 添加自https://github.com/lorenzofox3/Smart-Table/issues/164 ng.module("smart-table").directive("stResetSearch", function() { return { restrict: 'EA', require: '^stTable', link: function(scope, element, attrs, ctrl) { return element.bind('click', function() { return scope.$apply(function() { var tableState; tableState = ctrl.tableState(); tableState.search.predicateObject = {}; tableState.pagination.start = 0;返回 ctrl.pipe(); }); }); } }; });

    1. 在 angularjs 中调用函数的元素中添加了“st-research-search”。对我来说,这就是“tr”元素。如下所示。

           <tr ng-repeat="medicine in medicines" ng-click="medicationMatched(medicine)" ng-class="heatmapClass(medicine)" st-reset-search>
      

这工作得很好。不幸的是,我无法以编程方式从代码中清除谓词。但这对我来说已经足够好了。


推荐阅读