国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 望都县| 修水县| 手机| 牟定县| 三明市| 贞丰县| 青阳县| 饶河县| 福鼎市| 佛学| 营山县| 政和县| 河源市| 太仆寺旗| 怀仁县| 勐海县| 腾冲县| 连云港市| 工布江达县| 安泽县| 汶川县| 娄底市| 濮阳县| 浦城县| 吉木萨尔县| 太仓市| 嵊州市| 江西省| 东兰县| 泾源县| 涟源市| 双牌县| 迁安市| 长海县| 保康县| 双流县| 武陟县| 昌宁县| 科尔| 全州县| 康平县|