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

1龟劲、定義高亮 filter
我們希望搜索的關(guān)鍵字在正文中高亮出來,正文內(nèi)容就是過濾器的第一個參數(shù)阻肿,第二個參數(shù)就是搜索關(guān)鍵字,這樣沮尿,我們的過濾器將會有兩個參數(shù)了丛塌。

高亮的原理很簡單,將需要高亮的內(nèi)容使用 span 標記隔離出來畜疾,再加上一個高亮的 class樣式 進行描述就可以了赴邻。

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 提供的兩個服務(wù),其中 $sce 服務(wù)需要使用 ngSanitize 模塊啡捶。關(guān)于這個模塊姥敛,可以參考:angular-ngSanitize模塊-$sanitize服務(wù)詳解

2、定義html視圖

<div ng-controller="search">
            <div>
                <input type="text" ng-model="notify.search" value=""/>
            </div>
            <!--text內(nèi)容會高亮顯示搜索關(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

當搜索的關(guān)鍵字為數(shù)字時彤敛,如"1"与帆,報如下錯誤:(輸入漢字時沒有問題)

QQ截圖20170612154133.png

一些解決辦法:
1.直接try catch處理,這樣太簡單了墨榄,并且會導致新的問題出現(xiàn)
2.把escape全部改成encodeURIComponent編碼玄糟,試了一下不能解決問題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市袄秩,隨后出現(xiàn)的幾起案子阵翎,更是在濱河造成了極大的恐慌,老刑警劉巖之剧,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件郭卫,死亡現(xiàn)場離奇詭異,居然都是意外死亡背稼,警方通過查閱死者的電腦和手機贰军,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蟹肘,“玉大人谓形,你說我怎么就攤上這事〗埃” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵聘萨,是天一觀的道長竹椒。 經(jīng)常有香客問我,道長米辐,這世上最難降的妖魔是什么胸完? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮翘贮,結(jié)果婚禮上赊窥,老公的妹妹穿的比我還像新娘。我一直安慰自己狸页,他們只是感情好锨能,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芍耘,像睡著了一般址遇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斋竞,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天倔约,我揣著相機與錄音,去河邊找鬼坝初。 笑死浸剩,一個胖子當著我的面吹牛钾军,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绢要,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼吏恭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了袖扛?” 一聲冷哼從身側(cè)響起砸泛,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛆封,沒想到半個月后唇礁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡惨篱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年盏筐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砸讳。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡琢融,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出簿寂,到底是詐尸還是另有隱情漾抬,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布常遂,位于F島的核電站纳令,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏克胳。R本人自食惡果不足惜平绩,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漠另。 院中可真熱鬧捏雌,春花似錦、人聲如沸笆搓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砚作。三九已至窘奏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葫录,已是汗流浹背着裹。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骇扇。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓摔竿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親少孝。 傳聞我的和親對象是個殘疾皇子继低,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容