Microsoft Asp.Net Ajax框架入门(9) 事件

VS 2008

本文介绍如何定义事件监听,并订阅事件处理方法

本文例子取自<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 " );

    释义:
    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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值