Microsoft Asp.Net Ajax框架入门(9) 事件
VS 2008
本文介绍如何定义事件监听,并订阅事件处理方法
本文例子取自<Asp.Net Ajax in action>,并稍作修改
定义一个Collection类(集合),并定义一个事件监听:当集合添加新的项时,触发itemAdded事件
释义:
1)用到一个Asp.Net Ajax Core Library内建的 Sys.EventHandlerList类,专门用于保存事件订阅。
这个类包含几个基本的订阅事件和移出事件订阅的方法:
addHandler(String eventId, Function handler)
订阅事件
removeHandler(String eventId, Function handler)
移除事件订阅
getHandler(string eventId)
获得已订阅的事件处理方法
2)_raiseEvent方法标记为私有方法,专门用于调用已触发的事件的处理方法
3)当外部调用Collection类的Add方法时,就会触发itemAdded事件
4)将新添加的item的index作为参数传出
编写测试代码:
本文介绍如何定义事件监听,并订阅事件处理方法
本文例子取自<Asp.Net Ajax in action>,并稍作修改
定义一个Collection类(集合),并定义一个事件监听:当集合添加新的项时,触发itemAdded事件
/// <reference name="MicrosoftAjax.js"/>
Type.registerNamespace("Tristan");
Tristan.Collection = function() {
this._list = [];
this._eventHandlers = null;
}
Tristan.Collection.prototype = {
get_list : function() {
return this._list;
},
getEventHandlers : function() {
if(!this._eventHandlers) {
this._eventHandlers = new Sys.EventHandlerList();
}
return this._eventHandlers;
},
add_itemAdded : function(handler) {
this.getEventHandlers().addHandler("itemAdded", handler);
},
remove_itemAdded : function(handler) {
this.getEventHandlers().removeHandler("itemAdded", handler);
},
_raiseEvent : function(evtName, eventArgs) {
var handler = this.getEventHandlers().getHandler(evtName);
if(handler) {
handler(this, eventArgs);
}
},
add : function(item) {
Array.add(this._list, item);
this._raiseEvent("itemAdded", this._list.length - 1);
}
}
Tristan.Collection.registerClass("Tristan.Collection");
Type.registerNamespace("Tristan");
Tristan.Collection = function() {
this._list = [];
this._eventHandlers = null;
}
Tristan.Collection.prototype = {
get_list : function() {
return this._list;
},
getEventHandlers : function() {
if(!this._eventHandlers) {
this._eventHandlers = new Sys.EventHandlerList();
}
return this._eventHandlers;
},
add_itemAdded : function(handler) {
this.getEventHandlers().addHandler("itemAdded", handler);
},
remove_itemAdded : function(handler) {
this.getEventHandlers().removeHandler("itemAdded", handler);
},
_raiseEvent : function(evtName, eventArgs) {
var handler = this.getEventHandlers().getHandler(evtName);
if(handler) {
handler(this, eventArgs);
}
},
add : function(item) {
Array.add(this._list, item);
this._raiseEvent("itemAdded", this._list.length - 1);
}
}
Tristan.Collection.registerClass("Tristan.Collection");
释义:
1)用到一个Asp.Net Ajax Core Library内建的 Sys.EventHandlerList类,专门用于保存事件订阅。
这个类包含几个基本的订阅事件和移出事件订阅的方法:
addHandler(String eventId, Function handler)
订阅事件
removeHandler(String eventId, Function handler)
移除事件订阅
getHandler(string eventId)
获得已订阅的事件处理方法
2)_raiseEvent方法标记为私有方法,专门用于调用已触发的事件的处理方法
3)当外部调用Collection类的Add方法时,就会触发itemAdded事件
4)将新添加的item的index作为参数传出
编写测试代码:
pageLoad = function() {
var c = new Tristan.Collection();
c.add_itemAdded(itemAddedHandler);
c.add("guozhijian");
}
function itemAddedHandler(sender, eventArgs) {
alert("an item has been added");
alert(eventArgs);
}
var c = new Tristan.Collection();
c.add_itemAdded(itemAddedHandler);
c.add("guozhijian");
}
function itemAddedHandler(sender, eventArgs) {
alert("an item has been added");
alert(eventArgs);
}