AngularJS智能表严格搜索

时间:2015-03-04 13:34:15

标签: angularjs smart-table

Smart-table具有内置功能,可以搜索列(st-search)。是否可以对单词进行严格搜索,以便完全匹配?例如:如果我有这样的表:id,name,status:

  • 1,约翰,某地址
  • 2,Johnny,另一个地址
  • 3,简,地址

并搜索“John”,只显示第一行。这可能吗?

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。我的解决方案是使用未记录的stSetFilter功能传入我自己的自定义过滤器。

<table st-set-filter="myFilter" st-table="myData">

然后你只需创建一个角度滤镜。

angular.module('myApp').filter('myFilter',
  function($filter) {
    return function(input, predicate) {
      return $filter('filter')(input, predicate, true);
    };
  }
);

在我的情况下,我只需要在某些时候进行严格的搜索,所以我在过滤器中添加了一些额外的逻辑,但这样做可以让你一直进行严格的搜索。

我看起来更像是这样:

angular.module('myApp').filter('myFilter',
  function($filter) {
    return function(input, predicate) {
      var strict = false;
      if (predicate) { // some conditional if I want strict
        strict = true;
      }
      return $filter('filter')(input, predicate, strict);
    };
  }
);

答案 1 :(得分:1)

古老,但仍然有意义。 如果您有多个输入字段,但只想限制某些输入字段。
@elthrasher给了我这个主意。

angular.module('app').filter('myStrictFilter', function($filter) {
    return function(input, predicate) {
        var response = input,
            strict = false,
            custom_predicate = {};
        // some input fields must be strict
        angular.forEach(predicate, function(value, key) {
            custom_predicate = {};
            custom_predicate[key] = value;
            strict = false;
            if (key === 'completion_status') { // strict it is.
                strict = true;
            }
            response = $filter('filter')(response, custom_predicate, strict);
        });
        return response;
    };
});

答案 2 :(得分:0)

哟应该使用严格的比较器:

<input type="text" ng-model="query" />
<ul>
    <li data-ng-repeat="user in users | filter:{ name:query }:true">
      {{ user.id }}, {{ user.name }}, {{ user.address }}
    </li>
</ul>
  

比较器,用于确定是否有预期值(来自   过滤器表达式)和实际值(来自数组中的对象)   应被视为匹配。

     

可以是以下之一:

     

function(actual,expected):该函数将被赋予对象   值和要比较的谓词值,如果,则返回true   两个值都应该被认为是相等的。

     

true:功能的简写(实际,预期){返回   angular.equals(actual,expected)}。这基本上是严格的   预期和实际的比较。

     

false | undefined:一个寻找a的函数的简写   子串匹配,不区分大小写。

     

原始值转换为字符串。对象不进行比较   对基元,除非他们有自定义toString方法(例如   日期对象)。

相关问题