如何编写 angularjs 过滤器来搜索字符串片段/字符串序列
How can I write an angularjs filter to search for string fragments/sequences of strings
我正在尝试编写一个angularjs自定义过滤器,用于检查国家/地区数组是否包含用户输入的搜索字符串。
字符串可以由一个字母(例如"E")或n个字母的片段(例如"lan")或整个单词(例如"England")组成。
在任何情况下,都应返回包含该字母或片段的所有国家/地区,因此"E"将返回"英格兰","爱沙尼亚"等,而"lan"将返回"英格兰","爱尔兰"等。
到目前为止,我的过滤器返回整个国家或单个字母,但我在处理字符串片段时遇到困难:
模板:
<input ng-model="filter.text" type="search" placeholder="Filter..."/> <ul> <li ng-repeat="item in data | listfilter:filter.text"> </ul>
角度简斯
angular.module('sgComponents').filter('listfilter',[ function () { return function(items, searchText) { var filtered = []; angular.forEach(items, function(item) { if(item.label === searchText) { // matches whole word, e.g. 'England' filtered.push(item); } var letters = item.label.split(''); _.each(letters, function(letter) { if (letter === searchText) { // matches single letter, e.g. 'E' console.log('pushing'); filtered.push(item); } }); // code to match letter fragments, e.g. 'lan' }); return filtered; }; }]);
它比这简单得多,使用 String.indexOf()
函数:
angular.forEach(items, function(item) {
if( item.label.indexOf(searchText) >= 0 ) filtered.push(item);
});
您可能希望将两个字符串都.toLowerCase()
以执行不区分大小写的匹配:
searchText = searchText.toLowerCase();
angular.forEach(items, function(item) {
if( item.label.toLowerCase().indexOf(searchText) >= 0 ) filtered.push(item);
});
angular.module('sgComponents').filter('listfilter',[ function () {
return function(items, searchText) {
var filtered = [];
var regex = new RegExp(".*" + searchItem + ".*", "ig");
angular.forEach(items, function(item) {
if(regex.test(item)){
filtered.push(item);
}
});
return filtered;
}
}]);
看看 Angular-UI-Bootstrap 指令,了解它typeahead
完全符合您的要求:http://angular-ui.github.io/bootstrap/#/typeahead
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- 如何将字符串值从php页面发送到java脚本页面
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 使用javascript获取带有复选标记字符的字符串片段
- 如何将 HTML 字符串附加到文档片段
- 如何编写 angularjs 过滤器来搜索字符串片段/字符串序列
- Javascript:从长字符串到小片段
- 拆分字符串并移除片段js
- 在这种情况下,使用片段比使用html字符串有什么优势吗?
- 使用预字符串化的JSON片段
- 为什么Twitter将字符串传递给它的脚本加载JS片段
- 如何将HTML字符串拆分为多个片段并剥离外部标记
- 如何将字符串拆分为n个字符的片段
- 在一个字符串中查找多个字符串片段
- js - 获取字符串片段