• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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
    主站蜘蛛池模板: 国产精品热久久毛片| 中文字幕精品亚洲无线码二区 | 精品久久久久久| 中文字幕精品一区| 男女男精品网站免费观看| 桃花岛精品亚洲国产成人| 99久久人妻无码精品系列蜜桃 | 精品国产一区二区三区AV性色| 国产精品99久久久久久人| 麻豆国产在线精品国偷产拍| 亚洲欧美国产∧v精品综合网| 国产三级精品三级在线观看| 久久精品国产99国产电影网| 精品国产乱码久久久久久郑州公司 | 久久久精品日本一区二区三区| 国产精品igao视频| 亚洲午夜精品一区二区| 97久久超碰国产精品旧版| 久久99精品久久只有精品| 亚洲动漫精品无码av天堂| 亚洲AV永久无码精品一区二区| 国产亚洲精品拍拍拍拍拍| 国产成人AV无码精品| 国产精品久久久久一区二区三区| 91精品国产成人网在线观看| 91精品国产福利在线观看麻豆| 欧美精品福利视频| 欧美日韩在线亚洲国产精品| 精品久久久久久国产91| 国产精品视频网站| 精品久久久久久久久中文字幕| 99精品免费视品| 好吊妞视频精品| 99爱在线视频这里只有精品| 国产精品高清免费网站| 精品久久久久久无码中文字幕 | 日韩精品免费在线视频| 99热这里只有精品国产66| 国产日韩久久久精品影院首页| 久久久久国产成人精品亚洲午夜| 色婷婷久久久SWAG精品|