返回顶部
首页 > 资讯 > 前端开发 > html >Angular搜索场景中如何使用rxjs的操作符处理
  • 155
分享到

Angular搜索场景中如何使用rxjs的操作符处理

2024-04-02 19:04:59 155人浏览 八月长安
摘要

这篇文章主要为大家展示了“angular搜索场景中如何使用rxjs的操作符处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Angular搜索场景中如何使用rx

这篇文章主要为大家展示了“angular搜索场景中如何使用rxjs的操作符处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Angular搜索场景中如何使用rxjs的操作符处理”这篇文章吧。

栗子

  现在有一个查询场景,可以通过城市、类型、关键字来多维度过滤结果,如下图:

Angular搜索场景中如何使用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值是对象类型的话,就需要自己撸个简单的深拷贝工具函数了

以上是“Angular搜索场景中如何使用rxjs的操作符处理”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网html频道!

--结束END--

本文标题: Angular搜索场景中如何使用rxjs的操作符处理

本文链接: https://lsjlt.com/news/77522.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Angular搜索场景中如何使用rxjs的操作符处理
    这篇文章主要为大家展示了“Angular搜索场景中如何使用rxjs的操作符处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Angular搜索场景中如何使用rx...
    99+
    2024-04-02
  • 解析 PHP 中点操作符的重要性和应用场景
    标题:PHP 中点操作符的重要性和应用场景解析 在PHP中,点操作符(.)是连接两个字符串的运算符,也称为字符串连接符。尽管在一些编程语言中,使用加号(+)来连接字符串更为常见,但在P...
    99+
    2024-04-02
  • Redis在大数据处理中的作用及应用场景
    标题:Redis在大数据处理中的作用及应用场景引言:随着互联网的快速发展,数据量也在不断增长。对于大数据的处理和存储成为了一个重要的问题。在这个过程中,Redis作为一种高性能的内存缓存数据库,发挥了重要的作用。本文将详细介绍Redis在大...
    99+
    2023-11-07
    高性能 实时数据处理 数据持久化 作用: 缓存 应用场景: 分布式计算
  • Python 中索引和日志处理,你是如何应对复杂场景的?
    作为一名 Python 开发人员,我们经常需要处理大量的数据,并需要快速地查找、索引和处理数据。这时,索引和日志处理就成为了我们必须掌握的技能之一。在本文中,我们将讨论如何在 Python 中应对复杂场景,使用索引和日志处理技术来优化我们...
    99+
    2023-10-20
    索引 日志 面试
  • Linq 中如何使用Contains操作符
    Linq 中如何使用Contains操作符,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。投影和排序您可能还注意到我在之前的示例中暗藏了一个投影。在使用 Max 操作符之前,LI...
    99+
    2023-06-17
  • 如何在Python中处理字符串操作的问题
    如何在Python中处理字符串操作的问题Python作为一种高级编程语言,具有强大的字符串处理能力。在日常开发中,字符串操作是非常常见的操作之一。本文将介绍如何在Python中高效地处理字符串,同时附带具体的代码示例。字符串的拼接和格式化字...
    99+
    2023-10-22
    字符串处理 Python字符串操作 字符串处理技巧
  • PHP8中如何使用Stringable Interface更方便地处理字符串操作?
    PHP8中如何使用Stringable Interface更方便地处理字符串操作?PHP8是PHP语言的最新版本,带来了许多新特性和改进。其中一项令开发者欢欣鼓舞的改进之一就是Stringable Interface的加入。Stringab...
    99+
    2023-10-22
    PHP 字符串操作 Stringable
  • 如何在JavaScript中使用new操作符
    本篇文章给大家分享的是有关如何在JavaScript中使用new操作符,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、说明(1)创建一个空对象。(2)将对象的__proto指...
    99+
    2023-06-15
  • C#中如何使用三元操作符
    C#中如何使用三元操作符,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C# 操作符之三元操作符“:”是什么呢?C# 操作符之三元操作符“:”有时也称为条件操作符...
    99+
    2023-06-18
  • C++中如何使用逗号操作符
    C++中如何使用逗号操作符,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。其实,我们是经常会用到逗号操作符的,但是并不是所有代码里出现的逗号都是逗号操作符。让我们先从一个类的示例...
    99+
    2023-06-17
  • 如何使用批处理实现百度关键字搜索
    这篇文章将为大家详细讲解有关如何使用批处理实现百度关键字搜索,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。@echo off set a= set/p a...
    99+
    2023-06-09
  • Python 自然语言处理中,如何使用 NumPy 数组进行索引操作?
    自然语言处理是人工智能领域中的一个重要分支,它研究如何让计算机理解和处理人类语言。在自然语言处理中,常常需要对文本进行分词、词性标注、命名实体识别等操作。而这些操作往往需要用到数组的索引功能。本文将介绍如何使用 NumPy 数组进行索引操...
    99+
    2023-10-27
    自然语言处理 numy 索引
  • 如何使用awk的比较操作符
    这篇文章主要介绍了如何使用awk的比较操作符,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。对于使用 awk 命令的用户来说,处理一行文本中的数字或者字符串时,使用比较运算符来...
    99+
    2023-06-10
  • 自然语言处理中,如何使用 Python 和 NumPy 进行高效的索引操作?
    自然语言处理(NLP)是人工智能领域中非常重要的一部分。在处理大量文本数据时,高效的索引操作是至关重要的。Python和NumPy是NLP领域中非常流行的编程语言和库,它们能够帮助我们进行高效的索引操作。 本文将介绍如何使用Python和N...
    99+
    2023-10-27
    自然语言处理 numy 索引
  • Python如何处理带有 \u 的字符串操作
    这篇文章主要介绍“Python如何处理带有 \u 的字符串操作”,在日常操作中,相信很多人在Python如何处理带有 \u 的字符串操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python如何处理带有 ...
    99+
    2023-06-14
  • 如何在PHP文件中使用自然语言处理索引提高搜索效率?
    随着互联网技术的不断进步,搜索引擎已经成为我们获取信息的主要方式。然而,搜索引擎的效率往往受到很多因素的影响,其中最重要的就是搜索索引的质量。本文将介绍如何在PHP文件中使用自然语言处理索引来提高搜索效率。 一、什么是自然语言处理索引? 自...
    99+
    2023-08-08
    文件 自然语言处理 索引
  • Go 语言中的文件操作:如何使用函数关键字来搜索关键词?
    在 Go 语言中,文件操作是一项非常基础的任务。在日常的工作和开发中,我们需要经常读取、写入和搜索文件。本篇文章将介绍如何在 Go 语言中使用函数关键字来搜索关键词。 搜索文件 在 Go 语言中,可以使用 os 包中的 Open 函数来打...
    99+
    2023-10-23
    函数 关键字 文件
  • 如何使用Python中的字符串操作函数处理大规模文本数据
    如何使用Python中的字符串操作函数处理大规模文本数据,需要具体代码示例随着互联网的快速发展和数据的不断增加,大规模文本数据处理成了现代科技中的一个重要课题。Python作为一门简单易学且功能强大的编程语言,提供了丰富的字符串操作函数,能...
    99+
    2023-10-22
    字符串操作 Python编程 大规模数据
  • 如何在JavaScript中使用可选链操作符
    这篇文章将为大家详细讲解有关如何在JavaScript中使用可选链操作符,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。可选链操作符(.)语法obj.propobj.[expr]func.(a...
    99+
    2023-06-15
  • Java中的什么场景使用递归,如何使用递归
    目录什么是递归?递归有什么优点?迭代和递归的区别递归的三个条件什么场景下适合使用递归场景一场景二总结Java 递归算法一、概述二、应用场景三、示例四、实际示例五、递归的缺点什么是递归...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作