(六) 事件处理

ExtJS提供了一套强大的事件处理机制,通过这些事件处理机制来响应用户的动作、监控控件状态变化、更新控件视图信息、与服务器进行交互等等。事件统一由Ext.EventManager对象管理,与浏览器W3C标准事件对象Event相对应,Ext封装了一个Ext.EventObject事件对象。支持事件处理的类(或接口)为Ext.util.Observable,凡是继承该类的组件或类都支持往对象中添加事件处理及响应功能。
首先我们来看标准html中的事件处理,看下面的html代码:
<script> 
 function fn(){  
  alert('onclick event'); 
 }
</script>
<input id="btnAlert" type="button" onclick="fn();" value="alert"/>
点击这个按钮则会触发onclick 事件,并执行onclick 事件处理函数中指定的代码,这里直接执行函数fn 中的代码,也即弹出一个简单的信息提示框。再简单修改一下上面的代码,内容如下:
<script>
 function fn(){
  alert('onclick event');
 }
 window.onload=function(){
  document.getElementById("btnAlert").onclick=fn;
 }
</script>


<input id="btnAlert" type="button" value="alert"/>

上面的代码在文档加载的时候,就直接对btnAlert 的onclick 赋值,非常清晰的指明了按钮btnAlert 的onclick 事件响应函数为fn,注意这里fn 后面不能使用括号“()”。
ExtJS 中组件的事件处理跟上面相似,看下面的代码:
<script>
 function fn(){
  alert('onclick event');
 }
 Ext.onReady(function(){
  Ext.get("btnAlert").addListener("click",fn);
 });
</script>
<input id="btnAlert" type="button" value="alert" />

Ext.get("btnAlert")得到一个与页面中按钮btnAlert 关联的Ext.Element 对象,可以直接调用该对象上的addListener 方法来给对象添加事件,同样实现前面的效果。在调用addListener方法的代码中,第一个参数表示事件名称,第二个参数表示事件处理器或整个响应函数。
ExtJS 支持事件队列,可以往对象的某一个事件中添加多个事件响应函数,看下面的代码:
Ext.onReady(function(){
 Ext.get("btnAlert").on("click",fn);
 Ext.get("btnAlert").on("click",fn);
});
addLinster 方法的另外一个简写形式是on,由于调用了两次addListener 方法,因此当点击按钮的时候会弹出两次信息。
ExtJS 还支持事件延迟处理或事件处理缓存等功能,比如下面的代码:
Ext.onReady(function(){
 Ext.get("btnAlert").on("click",fn,this,{delay:2000});
});
由于在调用addListener 的时候传递指定的delay 为2000,因此当用户点击按钮的时候,不会马上执行事件响应函数,而是在2000 毫秒后才会弹出提示信息框。当然,在使用Ext 的事件时,我们一般是直接在控件上添加事件,每一个控件包含哪些事件,在什么时候触发,触发时传递的参数等,在ExtJS 项目的文档中都有较为详细的说明。比如对于所有的组件Component,都包含一个beforedestroy 事件,该事件会在Ext 销毁这一个组件时触发,如果事件响应函数返回false,则会取消组件的销毁操作。
Ext.onReady(function(){
 var win=new Ext.Window({
  title:"不能关闭的窗口", height:200, width:300
 });
 win.on("beforedestroy",function(obj){
  alert("想关闭我,这是不可能的!");
  obj.show();
  return false;
 });
 win.show();
});
由于在窗口对象的beforedestroy 事件响应函数返回值为false,因此执行这段程序,你会发现这个窗口将无法关闭。组件的事件监听器可以直接在组件的配置属性中直接声明,如下面的代码与前面实现的功能一样:
Ext.onReady(function(){
 var win=new Ext.Window({
  title:"不能关闭的窗口",
  height:200, width:300,
  listeners:{"beforedestroy":function(obj){
   alert("想关闭我,这是不可能的!");
   obj.show();
   return false;
  }}
 });
 win.show();
});
了解了ExtJS 中的基本事件处理及使用方法,就可以在你的应用中随心所欲的进行事件相关处理操作了。

【RIS 辅助的 THz 混合场波束斜视下的信道估计与定位】在混合场波束斜视效应下,利用太赫兹超大可重构智能表面感知用户信道与位置(Matlab代码实现)内容概要:本文围绕“IS 辅助的 THz 混合场波束斜视下的信道估计与定位”展开,重点研究在太赫兹(THz)通信系统中,由于混合近场与远场共存导致的波束斜视效应下,如何利用超大可重构智能表面(RIS)实现对用户信道状态信息和位置的联合感知与精确估计。文中提出了一种基于RIS调控的信道参数估计算法,通过优化RIS相移矩阵提升信道分辨率,结合信号到达角(AoA)、到达时间(ToA)等信息实现高精度定位。该方法在Matlab平台上进行了仿真验证,复现了SCI一区论文的核心成果,展示了其在下一代高频通信系统中的应用潜力。; 适合人群:具备通信工程、信号处理或电子信息相关背景,熟悉Matlab仿真,从事太赫兹通信、智能反射面或无线定位方向研究的研究生、科研人员及工程师。; 使用场景及目标:① 理解太赫兹通信中混合场域波束斜视问题的成因与影响;② 掌握基于RIS的信道估计与用户定位联合实现的技术路径;③ 学习复现高水平SCI论文中的算法设计与仿真方法,支撑学术研究或工程原型开发; 阅读建议:此资源以Matlab代码实现为核心,强调理论与实践结合,建议读者在理解波束成形、信道建模和参数估计算法的基础上,动手运行和调试代码,深入掌握RIS在高频通信感知一体化中的关键技术细节。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值