国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

angularjs實(shí)現(xiàn)搜索的關(guān)鍵字在正文中高亮出來

2019-11-19 16:20:52
字體:
供稿:網(wǎng)友

1、定義高亮 filter

我們希望搜索的關(guān)鍵字在正文中高亮出來,正文內(nèi)容就是過濾器的第一個(gè)參數(shù),第二個(gè)參數(shù)就是搜索關(guān)鍵字,這樣,我們的過濾器將會(huì)有兩個(gè)參數(shù)了。

高亮的原理很簡(jiǎn)單,將需要高亮的內(nèi)容使用 span 標(biāo)記隔離出來,再加上一個(gè)高亮的 class樣式 進(jìn)行描述就可以了。

app.filter("highlight", function($sce, $log){  var fn = function(text, search){    $log.info("text: " + text);    $log.info("search: " + search);    if (!search) {      return $sce.trustAsHtml(text);    }    text = encodeURIComponent(text);    search = encodeURIComponent(search);    var regex = new RegExp(search, 'gi')    var result = text.replace(regex, '<span class="highlightedTextStyle">$&</span>');    result = decodeURIComponent(result);    $log.info("result: " + result );    return $sce.trustAsHtml(result);  };  return fn;});

$sce, 和 $log 是 angular 提供的兩個(gè)服務(wù),其中 $sce 服務(wù)需要使用 ngSanitize 模塊。關(guān)于這個(gè)模塊,可以參考:angular-ngSanitize模塊-$sanitize服務(wù)詳解

2、定義html視圖

<div ng-controller="search">      <div>        <input type="text" ng-model="notify.search" value=""/>      </div>      <!--text內(nèi)容會(huì)高亮顯示搜索關(guān)鍵字-->      <div ng-bind-html="text | highlight:notify.search">      </div></div>

3、控制器

app.controller("search", function($scope){  $scope.text = "hello, world. hello, world. hello, world. this is filter example.";  $scope.notify.search = "";})

注意在控制器中引入過濾器highlight

當(dāng)搜索的關(guān)鍵字為數(shù)字時(shí),如"1",報(bào)如下錯(cuò)誤:(輸入漢字時(shí)沒有問題)


一些解決辦法:

1.直接try catch處理,這樣太簡(jiǎn)單了,并且會(huì)導(dǎo)致新的問題出現(xiàn)

2.把escape全部改成encodeURIComponent編碼,試了一下不能解決問題

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 曲沃县| 洛川县| 察雅县| 大名县| 威远县| 巴林右旗| 通辽市| 竹溪县| 鲁山县| 田林县| 柳州市| 浦北县| 海口市| 荣成市| 平定县| 荆州市| 山西省| 航空| 广东省| 涞水县| 天门市| 齐齐哈尔市| 沈丘县| 松桃| 佳木斯市| 磐石市| 岳西县| 平邑县| 天峨县| 庆元县| 马鞍山市| 巴林左旗| 北京市| 九江县| 沙湾县| 哈尔滨市| 清河县| 香港 | 浙江省| 大洼县| 潼南县|