AngularJS智能表严格搜索
智能表有一个内置的功能来搜索列(st搜索)。有没有可能对单词进行严格的搜索,以便精确匹配?例如:如果我有如下表:id、名称、状态: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
- 约翰,地址在哪里
- 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;
};
});