EXT事件队列

本文通过一个具体的ExtJS应用案例,展示了如何使用事件驱动机制来更新用户界面元素,并同步反映对象属性的变化。此实例中创建了一个自定义的Person类,该类能够监听姓名和性别属性的变化,并触发相应的事件。
person.js

//事件对列

//用来定义一个命名空间,就像在JAVA中的包名一样
Ext.namespace("Ext.dojochina");

//定义一个类,同时设置构造函数
Ext.dojochina.Person = function(){

//定义事件
this.addEvents(
"namechange",
"sexchange"
);
}

//继承
Ext.extend(Ext.dojochina.Person , Ext.util.Observable,{
name:"",
sex:"",
setName:function(_name){

if(this.name != _name){
//发布事件
this.fireEvent("namechange" , this , this.name , _name);
this.name = _name;
}
},
setSex:function(_sex){

if(this.sex != _sex){
this.fireEvent("sexchange" , this , this.sex , _sex);
this.sex = _sex;
}
}
})


person.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="../EXTJS/resources/css/ext-all.css" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>事件对列</title>
<script type="text/javascript" src="../../EXTJS/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../../EXTJS/ext-all.js"></script>
<script type="text/javascript" src="Person.js"></script>

<script type="text/javascript">

var _person = null;

button_click = function(){
_person.setName(prompt("请输入姓名:" , ""));
_person.setSex(prompt("请输入性别:" , ""));
}

Ext.onReady(function(){
var txt_name = Ext.get("txt_name");
var txt_sex = Ext.get("txt_sex");

_person = new Ext.dojochina.Person();
//定阅事件
_person.on("namechange" , function(_person , old , _new) {
txt_name.dom.value = _new;
})
//定阅事件
_person.on("sexchange" , function(_person , old , _new) {
txt_sex.dom.value = _new;
})
//定阅事件
_person.on("namechange" , function(_person , old , _new) {
document.title = _new;
})
})
</script>

</head>

<body>
姓名:<input type="text" id="txt_name" maxlength="10"><br>
性别:<input type="text" id="txt_sex" maxlength="10"><br>
<input type="button" value="输入" onclick="button_click()">
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值