AngularJS智能表严格搜索

AngularJS智能表严格搜索,angularjs,smart-table,Angularjs,Smart Table,智能表有一个内置的功能来搜索列(st搜索)。有没有可能对单词进行严格的搜索,以便精确匹配?例如:如果我有如下表:id、名称、状态: 约翰,地址在哪里 2,约翰尼,另一个地址 3、简,地址 然后搜索“John”,只有第一行应该显示。这可能吗?您应该使用严格的比较器: <input type="text" ng-model="query" /> <ul> <li data-ng-repeat="user in users | filter:{ name:qu

智能表有一个内置的功能来搜索列(st搜索)。有没有可能对单词进行严格的搜索,以便精确匹配?例如:如果我有如下表:id、名称、状态:

  • 约翰,地址在哪里
  • 2,约翰尼,另一个地址
  • 3、简,地址

然后搜索“John”,只有第一行应该显示。这可能吗?

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

<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>

  • {{user.id}、{{user.name}、{{user.address}
用于确定预期值(从 过滤器表达式)和实际值(来自数组中的对象) 应该被视为匹配

可以是以下内容之一:

函数(实际、预期):函数将被赋予对象 值和要比较的谓词值,如果 这两个值应视为相等

true:函数(实际、预期){return的简写形式 角度。等于(实际、预期)}。这基本上是严格的 预期和实际的比较

false |未定义:查找 子字符串匹配不区分大小写

原语值将转换为字符串。对象不可比较 针对原语,除非它们具有自定义toString方法(例如。 日期对象)


我也有同样的问题。我的解决方案是使用未记录的stSetFilter特性传入我自己的自定义过滤器

<table st-set-filter="myFilter" st-table="myData">
在我的例子中,我只需要在某些时候进行严格搜索,所以我在过滤器中添加了一些额外的逻辑,但这将使您能够一直进行严格搜索

我的更像这样:

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);
    };
  }
);
旧的,但仍然相关。 如果您有多个输入字段,但只对某些字段严格要求。
@埃尔特拉赫给了我这个主意

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;
    };
});

谢谢尽管如此,我还是想利用smart table的搜索功能,因为我正在使用它的管道插件()。有什么想法吗?
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;
    };
});