<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
        主站蜘蛛池模板: 福利免费观看午夜体检区| 最近中文字幕mv手机免费高清| 久久不见久久见免费影院www日本| 日韩欧美一区二区三区免费观看| 日本久久久久亚洲中字幕| 亚洲精品无AMM毛片| 免费看的黄色大片| 久久精品亚洲一区二区| 中文字幕av免费专区| 亚洲乱码无码永久不卡在线| 亚洲日产乱码一二三区别| 四虎影院免费在线播放| 久久久久无码精品亚洲日韩 | 日本h在线精品免费观看| 亚洲日韩乱码中文无码蜜桃| 国产精品1024在线永久免费| 久久久久国产成人精品亚洲午夜| 欧洲乱码伦视频免费国产| 亚洲精品高清无码视频| 84pao强力永久免费高清| 国产精品亚洲综合久久| 久久久久成人精品免费播放动漫| 亚洲天天在线日亚洲洲精| 毛片免费观看网址| 野花视频在线官网免费1| 日本免费一区二区三区最新| 亚洲特级aaaaaa毛片| 四虎成人免费影院网址| 一本到卡二卡三卡免费高| 免费看国产精品麻豆| 国产一级a毛一级a看免费人娇| 久久久久亚洲AV无码永不| 免费观看大片毛片| 好男人资源在线WWW免费| 亚洲美女激情视频| 免费看国产曰批40分钟| 免费观看91视频| 亚洲AV无码AV日韩AV网站| 亚洲国产精品无码中文字| 在线观看免费a∨网站| 免费无码又爽又刺激一高潮|