百度搜索查询功能,全文匹配,查找到后文本高亮。
实例:angular过滤器做法
var app=angular.module('myApp',[]);
app.filter('htmlHighLight', function () {
return function (input,param) {
var input=input;
var param=param;
// 最大数为5,所用用 slice方法给截取
if($.trim(param)!==''){
// 去掉多余的空格
param= param.replace(/\s{2,}/ig,' ');
param=param.split(' ');
if(param.length>5){
param=param.slice(0,5);
}
}else {
param=[];
}
// 数据格式化
function htmlHighLightFormat(input,replaceString){
if(replaceString.length>0){
var input=String(input);
//特殊字符需要进行转义
var specialCode=['*' ,'.', '?', '+', '$', '^', '[', ']', '(' ,')', '{', '}', '|','/']
angular.forEach(replaceString, function (value,index) {
var _flag=false;
// 遍历特殊字符
specialCode.forEach(function(_value,index){
if(value.indexOf(_value)!==-1){
value=value.split(_value).join('\\'+_value);
}
});
var _parttern="/("+value+")/igm";
// 正则匹配
input=input.replace(eval(_parttern),'<em class="fd-high-light">'+'$1'+'</em>');
});
}else {
input=input;
}
return input;
};
if( typeof input==='undefined'|| String(input)==='null'){
input='';
}else {
input= htmlHighLightFormat(input,param);
}
return input;
};
})
-
« 上一篇:
问题回顾【一】
-
原生数据双向绑定实例【分享二】
:下一篇 »