<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Angular搜索場景中使用rxjs的操作符處理思路

        來源:懂視網 責編:小采 時間:2020-11-27 22:13:45
        文檔

        Angular搜索場景中使用rxjs的操作符處理思路

        Angular搜索場景中使用rxjs的操作符處理思路:在有input輸入框的搜索/過濾業務中,總會考慮如何減少發起請求頻率,盡量使每次的請求都是有效的。節流和防抖是比較常見的做法,這類函數的實現方式也不難,不過終歸還是需要自己封裝。rxjs提供了各種操作符 , 可以很快捷高效的實現這些功能。 栗子 現在
        推薦度:
        導讀Angular搜索場景中使用rxjs的操作符處理思路:在有input輸入框的搜索/過濾業務中,總會考慮如何減少發起請求頻率,盡量使每次的請求都是有效的。節流和防抖是比較常見的做法,這類函數的實現方式也不難,不過終歸還是需要自己封裝。rxjs提供了各種操作符 , 可以很快捷高效的實現這些功能。 栗子 現在

        在有input輸入框的搜索/過濾業務中,總會考慮如何減少發起請求頻率,盡量使每次的請求都是有效的。節流和防抖是比較常見的做法,這類函數的實現方式也不難,不過終歸還是需要自己封裝。rxjs提供了各種操作符 , 可以很快捷高效的實現這些功能。

        栗子

          現在有一個查詢場景,可以通過城市、類型、關鍵字來多維度過濾結果,如下圖:

          處理思路:

            1、通過ngModel將select和input的值綁定到模型中的過濾條件對象

            2、監聽select輸入框的change事件和input輸入框的input事件來觸發 發送過濾條件的函數

            3、創建一個用于發送過濾條件的Subject,再通過操作符來進行防抖動、前后值的對比等處理,訂閱此主體,有有效的過濾條件過來時才發送請求,拉取數據。 

          值綁定和事件監聽:

        <select name="city" id="city" [(ngModel)] = "config.cityCode" (change)="filterList()">
         <option [value]="city.value" *ngFor="let city of citylist" >{{city.name}}</option>
         </select>
         <select name="type" id="type" [(ngModel)] = "config.areaType" (change)="filterList()">
         <option value="">全部</option>
         <option value="TRAFFIC">交通</option>
         <option value="TRAVEL">旅游</option>
         </select>
         <input type="text" class="search" id="search" 
         [(ngModel)] = "config.name" 
         (input)="filterList()"
         placeholder="請輸入關鍵字">

        這里為什么input不監聽change事件呢? type=text類型的input在失焦的時候才會觸發change事件,而input事件則只要value變化就會觸發(這里沒有考慮IE兼容性問題)

          處理函數 :

         // 用于傳遞配置項
         public $filter = new Subject<any>();
         // 過濾條件
         public config: FilterConfig = {
         cityCode : '',
         areaType : '',
         name : ''
         };
         ngOnInit() {
         // 監聽過濾配置項
         this.$filter.pipe(
         debounceTime(500),
         distinctUntilChanged( (n: FilterConfig , o: FilterConfig): boolean => {
         return n.name === o.name &&
         n.cityCode === o.cityCode &&
         n.areaType === o.areaType;
         })
         ).subscribe( _config => {
         this.getRegionList(_config);
         });
         }
         filterList() {
         // 每次都要發送一個新的對象,否則distinctUntilChanged compare的時候會一直比較同一個對象的值
         this.$filter.next(Object.assign({}, this.config));
         }
         getRegionList (_config) {
         // 發送請求,更新區域數據
         console.log(_config);
         }

          需要注意的是,$filter傳遞過濾條件的時候,一定要發送一個新的對象,否則 distinctUntilChanged 的 compare 函數由于比較的是同一個對象,會一直認為沒有變化,導致不會繼續傳播。因為config對象的value都是string簡單類型,所以可以直接用Object.assign,如果value值是對象類型的話,就需要自己擼個簡單的深拷貝工具函數了

        總結

          主要的思路就是通過Subject來發送過濾條件,這樣就可以使用rxjs的各種操作符,可以快捷很多。而在比較對象的時候需要自定義distinctUntilChanged 操作符的compare函數,這時需要注意不要傳遞同一個對象。

        總結

        以上所述是小編給大家介紹的Angular搜索場景中使用rxjs的操作符處理思路,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Angular搜索場景中使用rxjs的操作符處理思路

        Angular搜索場景中使用rxjs的操作符處理思路:在有input輸入框的搜索/過濾業務中,總會考慮如何減少發起請求頻率,盡量使每次的請求都是有效的。節流和防抖是比較常見的做法,這類函數的實現方式也不難,不過終歸還是需要自己封裝。rxjs提供了各種操作符 , 可以很快捷高效的實現這些功能。 栗子 現在
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久亚洲综合色一区二区三区| 亚洲人成网站在线观看播放青青 | 亚洲精品国产精品乱码视色| 精品国产综合成人亚洲区| 一区二区三区免费视频播放器 | 无遮挡呻吟娇喘视频免费播放| 国产成人一区二区三区视频免费| 在线观看亚洲天天一三视| 成人无码a级毛片免费| 亚洲国产天堂久久久久久| 精品国产日韩亚洲一区91| 久久精品免费观看| 亚洲国产精品无码专区| 99国产精品免费视频观看| 亚洲精品成人久久| 无人在线观看免费高清视频| 亚洲日本VA午夜在线影院| 国产成人免费一区二区三区| 一区二区视频在线免费观看| 国产∨亚洲V天堂无码久久久| 99久热只有精品视频免费看 | 久青草视频97国内免费影视| 亚洲爆乳无码专区| 亚洲精品免费在线视频| 久久久久无码专区亚洲av| 最近免费中文字幕MV在线视频3| 亚洲国产精品久久久久婷婷老年 | 亚洲av无码无线在线观看| 亚洲精品动漫人成3d在线| 久久99毛片免费观看不卡| 亚洲字幕在线观看| 免费一级做a爰片性色毛片| 国产日韩AV免费无码一区二区| 亚洲高清在线mv| 又大又粗又爽a级毛片免费看| 国产免费爽爽视频在线观看| 中文字幕在线日亚洲9| 国内精品久久久久久久亚洲| 亚洲高清免费在线观看| 黄页免费视频播放在线播放| 亚洲乱亚洲乱淫久久|