(八) 方法
使用JavaScript编写一个类的方法时,一般不作特殊考虑;但是,我们还是推荐在控件的原型(prototype)对象中添加它们。
(九) 事件
在控件类中添加事件类似添加属性。首先,在控件构造器中把事件处理器声明为一个私有变量并在原型对象中创建相应于该事件的一个add/delete方法对。尽管并不要求在模块级声明事件处理器变量,但是,这样做的确存在一些优点,我将在Ajax框架的Function.createDelegate()节讨论这个问题。当添加/删除事件时,Ajax框架总是自动地添加上add_和remove_前缀。因此,当添加事件订阅代码时,该方法应该以add_eventName方式命名;反之,以remove_eventName方式命名。例如,在上面的click事件示例中,我们以add_click和remove_click形式添加事件订阅方法,但是在$create语句中,我们以click方式对它命名,由Ajax框架负责添加add_前缀。如你在上面的示例所见,add_click和remove_click都引用了this.get_event()(继承自Sys.Component)。这个Sys.Component类维持着一个订阅事件的内部列表,存储于一个Sys.EventHandlerList类的实例(以及各自它们的处理器)中。
除了这个get_event()方法对外,还推荐使用raiseEventName方法来激发事件。由于上面所举的仅是一个很基本的例子,所以,我没有在其中使用它。但是,当你想从多处激发同一个事件时你必须添加它。当激发一个事件时,我们可以传递一些称为事件参数的上下文数据。
在事件中传递参数的推荐的方法是,创建一个继承自Sys.EventArgs的新类并构造器中传递要求的参数。针对每一个参数,它将在原型对象部分暴露getter和setter。因为本例非常简单,所以,没有使用这种更一般的方式。
当前在该微软Ajax库中相应于事件参数存在两个内置类—Sys.EventArgs和Sys.CancelEventArgs。即使你有一个不需要任何事件参数的事件,那么,你也应该传递Sys.EventArgs.Empty(例如在上面的ImageButton控件示例中),以便事件订阅者可以遵循相同的模式来处理所有的事件。
如果你细致研究框架源码,你会注意到,其中绝大部分的控件都遵循了相同的模式—使用函数HandleEvent(sender, e)来处理所有事件。注意,这与.NET框架处理事件所实现的模式是相同的。而且,遵循这种方式给人的初始感觉过于复杂,但是却更遵循了一般性规律,便于以后的更复杂设计。
转 载:http://www.qqread.com/ajax/w396632.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Ajax技术专题 (556篇文章)
- .NET移动与嵌入式技术 (5963篇文章)
- .NET开发手册 (5664篇文章)
- Ajax技术应用开发 (556篇文章)
- ASP.NET教程 (8457篇文章)
- Wlan组网----家庭专题 (4206篇文章)
- Ajax框架与实例 (220篇文章)
- .NET实用开发 (1683篇文章)
- Ajax技术资讯 (81篇文章)
- Ajax基础教程 (96篇文章)
- AJAX应用之注册用户即时检测 (14次浏览)
- AJAX应用之草稿自动保存 (7次浏览)
- 为ASP.NET MVC框架添加AJAX支持 (4次浏览)
- AJAX通用类:AJAXRequest v0.3 (3次浏览)
- AJAX开发简略 (3次浏览)
- ajax的缺点 (3次浏览)
- ajax代理程序自动判断字符编码 (3次浏览)
- AJAX打造博客无刷新搜索 (2次浏览)
- 不用组件实现Ajax效果 (0次浏览)
- XMLHttpRequest对象如何铸就AJAX辉煌 (0次浏览)



