Microsoft Asp.Net Ajax框架入门(4) 订阅事件处理函数并传递参数
VS2008、C#3.0
上一篇提到了为客户端element订阅事件处理函数,本篇来看看如何在订阅的同时传递参数。
1. 使用 Function.createDelegate(instance, Function method)
调用Function.createDelegate的时候,第一个参数使用this关键字,那么在委托的函数中就可以通过this关键字引用到发起订阅的代码块所在对象的成员(包括属性和方法)。
2. 使用 Function.createCallback(Function method, context)
上一篇提到了为客户端element订阅事件处理函数,本篇来看看如何在订阅的同时传递参数。
1. 使用 Function.createDelegate(instance, Function method)
function pageLoad() {
this.userName = "guozhijian";
this.password = "pass";
var delegate = Function.createDelegate(this, btnCommitClick);
this.showAlert = function() {
alert("a");
}
Sys.UI.DomEvent.addHandler($get("btnCommit"),"click",delegate);
}
function btnCommitClick(evt) {
alert(this.userName);
alert(this.password);
this.showAlert();
}
this.userName = "guozhijian";
this.password = "pass";
var delegate = Function.createDelegate(this, btnCommitClick);
this.showAlert = function() {
alert("a");
}
Sys.UI.DomEvent.addHandler($get("btnCommit"),"click",delegate);
}
function btnCommitClick(evt) {
alert(this.userName);
alert(this.password);
this.showAlert();
}
调用Function.createDelegate的时候,第一个参数使用this关键字,那么在委托的函数中就可以通过this关键字引用到发起订阅的代码块所在对象的成员(包括属性和方法)。
2. 使用 Function.createCallback(Function method, context)
function pageLoad() {
var context = {
userName : "guozhijian",
password : "pass"
};
var callback = Function.createCallback(btnCommitKeypress, context);
Sys.UI.DomEvent.addHandler($get("btnCommit"),"keypress",callback);
}
function btnCommitKeypress(evt,context) {
alert(context.userName);
alert(context.password);
}
调用Function.createCallback的时候,第二个参数传递一个在订阅事件处理方法的作用域内定义的对象(Object)。var context = {
userName : "guozhijian",
password : "pass"
};
var callback = Function.createCallback(btnCommitKeypress, context);
Sys.UI.DomEvent.addHandler($get("btnCommit"),"keypress",callback);
}
function btnCommitKeypress(evt,context) {
alert(context.userName);
alert(context.password);
}