自定义事件

EXT中遵循一种树状的事件模型,所有继承自Ext.util.Observeable类的控件都可以支持事件。可以为这些继承了Ext.util.Observable的对象定义一些事件,然后为这些事件配置监听器。当某个事件发生时,Ext会自动调用监听器,这些就是Ext的事件模型。

1.首先定义个一个Person类, 及其自定义事件。

Ext.namespace("Ext.com.sunrex");

Ext.com.sunrex.Person = function(_name) {
	this.name = _name;
	this.addEvents("walk", "eat", "sleep");
}

Ext.extend(Ext.com.sunrex.Person, Ext.util.Observable, {
	info: function(event) {
		return  this.name + ' is ' + event + 'ing';
	}
});

 以上实现了一个名称为Person的对象,他有一个属性name。初始化时,调用this.addEvents(...)函数,定义了三个事件:walk、eat、sleep,最后使用Ext.extend() 让Person继承Ext.util.Observable的所有属性。此外我们还加上了一个函数info(), 让它返回Person的信息。

 

2、在HTML中定义一个Person实例,然后为它的时间配置好监听器,如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>HelloWorld.html</title>
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" type="text/css" href="../extjs_lib/resources/css/ext-all.css">
  	<script type="text/javascript" src="../extjs_lib/adapter/ext/ext-base.js"></script>
  	<script type="text/javascript" src="../extjs_lib/ext-all.js"></script>
  	<script type="text/javascript" src="../js/A_004_HelloWorld.js"></script>
  	<script type="text/javascript">
  		var person = new Ext.com.sunrex.Person("张三 --> ");
  		person.addListener('walk', function() {
  			Ext.Msg.alert('event', person.name + "走呀走呀走!");
  		});
  		
  		person.on("eat", function() {
  			Ext.Msg.alert('event', person.name + " 吃呀吃呀吃!");
  		});
  		
  		person.on('sleep', function() {
  			Ext.Msg.alert('event', person.name + " 睡呀睡呀睡!");
  		});
  		
  		function invokeWalk() {
  			person.fireEvent('walk');
  		}
  		
  		Ext.onReady(function() {
  			Ext.get('eat').addListener('click', function() {
  				person.fireEvent('eat');
  			});
  			Ext.get('sleep').on('click', function() {
  				person.fireEvent('sleep');
  			});
  		});
  		
  	</script>
  </head>
  
  <body>
  	<input type="hidden" id="h">
    <input type="button" id="walk" value="walk" onclick="invokeWalk()"><br>
    <input type="button" id="eat" value="eat"><br>
    <input type="button" id="sleep" value="sleep"><br>
  </body>
</html>

 

 上面的on就是addListener()的简写形式,功能完全一样。第一个参数是事件的名称,第二个参数是事件发生时要执行的函数。

同理un是removeListener()的简写形式。

还有一个函数purgeListeners(),他可以办所有的监听器都删除。

你可能感兴趣的:(JavaScript,html,css,ext)