news 2026/6/10 4:16:35

<input type=“text“ placeholder=“Search..“ [(ngModel)]=“searchText“ (input)=“search()“ />代码分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
<input type=“text“ placeholder=“Search..“ [(ngModel)]=“searchText“ (input)=“search()“ />代码分析
flowchartTDA[用户在输入框输入]-->B[(ngModel)更新 searchText]B-->C[(input)调用search()]C-->D[过滤 testTypeList 得到 filteredTestTypeList]D-->E[页面显示过滤后的列表]F[用户点击复选框]-->G[toggleTestType(item)]G-->H{item.checked?}H-->|true且未在 selectedTestType|I[加入 selectedTestType]H-->|false且在 selectedTestType|J[从 selectedTestType 删除]I-->K[页面显示更新后的已选列表]J-->K
<divclass="dropdown"><input type="text"placeholder="Search.."[(ngModel)]="searchText"(input)="search()"/><div*ngFor="let item of filteredTestTypeList"class="option"><input type="checkbox"[checked]="item.checked"(change)="toggleTestType(item)"/><label>{{item.name}}</label></div><button(click)="applyFilter()">Apply Filter</button><divclass="selected-items"><span*ngFor="let item of selectedTestType">{{item.name}}</span></div></div>
import{Component,OnInit,Output,EventEmitter}from'@angular/core';interfaceTestTypeItem{name:string;value:string;checked?:boolean;}@Component({selector:'app-location-test-type',templateUrl:'./location-test-type.component.html',styleUrls:['./location-test-type.component.css']})exportclassLocationTestTypeComponentimplementsOnInit{// 搜索输入searchText:string='';// 全部 Test Type 列表testTypeList:TestTypeItem[]=[{name:'test1',value:'test1'},{name:'test2',value:'test2'},{name:'test3',value:'test3'}];// 用户选中的 Test TypeselectedTestType:TestTypeItem[]=[];// 搜索后的列表filteredTestTypeList:TestTypeItem[]=[];// 把选中数据 emit 给父组件@Output()selected=newEventEmitter<TestTypeItem[]>();ngOnInit():void{this.filteredTestTypeList=[...this.testTypeList];}// 选中 / 取消toggleTestType(item:TestTypeItem){item.checked=!item.checked;constindex=this.selectedTestType.findIndex(x=>x.name===item.name);if(item.checked&&index===-1){this.selectedTestType.push(item);}elseif(!item.checked&&index>-1){this.selectedTestType.splice(index,1);}}// 搜索search(){consttext=this.searchText.toLowerCase();this.filteredTestTypeList=this.testTypeList.filter(item=>item.name.toLowerCase().includes(text));}// 应用 FilterapplyFilter(){// Emit 给父组件this.selected.emit(this.selectedTestType);}}

1. [(ngModel)]=“searchText”

这是 Angular 的 双向数据绑定。

ngModel 是 Angular Forms 模块提供的指令,用来绑定表单控件(如 )的值和组件里的属性。

[(…)] 是 双向绑定语法糖(也叫 Banana in a box,因为看起来像 [(…)])。

作用:
视图 → 组件:用户在输入框输入内容时,组件里的 searchText 会自动更新。

组件 → 视图:如果在组件里修改了 searchText,输入框的值也会自动更新。

举例:

// component.tssearchText='初始值';<input type="text"[(ngModel)]="searchText"/>

页面输入框会显示“初始值”

用户修改输入框的内容时,searchText 会跟着更新

2. (input)=“search()”

这是 事件绑定,表示监听 input 事件:

当用户在输入框里输入内容时,会触发 input 事件。

触发后调用组件里的 search() 方法。

结合 [(ngModel)]:

<input type="text"[(ngModel)]="searchText"(input)="search()"/>

逻辑就是:

  • 用户输入 → searchText 更新

  • search() 方法执行 → 根据最新的 searchText 过滤列表

总结

语法作用
[(ngModel)]="searchText"双向绑定输入框和组件属性,保证视图和数据同步
(input)="search()"监听用户输入事件,每次输入触发搜索方法

所以组合起来就是:
用户每输入一个字符 → 更新 searchText → 调用 search() → 更新 filteredTestTypeList → 页面显示最新过滤后的列表。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 13:21:09

深入 Flutter 自定义 RenderObject:打造高性能异形滚动列表

在 Flutter 开发中&#xff0c;ListView、GridView等通用滚动组件能满足 80% 的常规场景&#xff0c;但面对电商异形商品展示、社交 APP 个性化卡片流、数据可视化仪表盘等复杂 UI 需求时&#xff0c;仅靠组合现有 Widget 往往会遇到性能瓶颈或视觉效果限制。此时深入 Flutter …

作者头像 李华
网站建设 2026/6/10 2:17:38

33、分布式控制器设计与精确矩动力学计算

分布式控制器设计与精确矩动力学计算 1. 精确矩动力学计算示例 在定义配分函数的求和中,其缩减指标可以通过史密斯标准型以更系统的形式得到。假设矩阵 (P\in Z^{q\times n}) 表示 (n) 种物质的 (q) 个守恒定律。例如,在竞争结合示例中,(P = [1, 0, 0, 1, 1; 0, 1, 0, 1, …

作者头像 李华
网站建设 2026/6/10 13:19:46

35、机器学习在联合分类与分割及鲁棒凸优化中的应用

机器学习在联合分类与分割及鲁棒凸优化中的应用 联合分类与分割中的关键技术 在图像的联合分类与分割领域,涉及到诸多关键的理论和算法。 1. 线积分转换与能量流计算 - 最初有公式 $\frac{\partial E}{\partial \xi_i} = \int_{\hat{c}} [r_o(I (x), \hat{c}) - r_b(I (…

作者头像 李华
网站建设 2026/6/10 6:02:13

【大数据环境安装指南】ZooKeeper搭建Hadoop高可用集群教程

文章目录前言一、 核心架构说明二、 环境准备&#xff08;所有节点执行&#xff09;2.1 服务器规划&#xff08;3 节点&#xff09;2.2 基础环境初始化2.2.1 关闭防火墙和 SELinux&#xff08;所有节点&#xff09;2.2.2 配置主机名和 hosts 映射2.2.3 安装 JDK&#xff08;Had…

作者头像 李华
网站建设 2026/6/10 14:53:41

6、深入探索脚本条件判断与代码片段创建

深入探索脚本条件判断与代码片段创建 1. 条件判断基础操作 在脚本编写中,条件判断是实现脚本逻辑的关键部分。我们可以使用 JG 语句来检查文件和目录,以下是一个检查目录是否存在的示例: #!/bin/bash mydir=~/mydir if [ -d "$mydir" ]; thenecho "Dir…

作者头像 李华