JavaScud | Forum | JIRA | Blog |
  Dashboard > DWR中文文档 > Home > Passing extra data to callbacks
  DWR中文文档 Log In View a printable version of the current page.  
  Passing extra data to callbacks
Added by 黑灵, last edited by 黑灵 on Oct 28, 2006
Labels: 
(None)

传递额外的数据到callback函数

通常我们需要传递额外的数据到callback函数,但是因为所有的回调函数都只有一个参数(远程方法的返回结果),这就需要一些小技巧了。

解决方案就是使用Javascript的闭包特性。

例如,你的回调函数原本需要像这个样子:

function callbackFunc(dataFromServer, dataFromBrowser) { 
// 用dataFromServer和dataFromBrowser做些事情...... 
}

那么你可以像这个组织你的函数:

var dataFromBrowser = ...; 

// 定义一个闭包函数来存储dataFromBrowser的引用,并调用dataFromServer 
var callbackProxy = function(dataFromServer) { 
callbackFunc(dataFromServer, dataFromBrowser); 
}; 

var callMetaData = { callback:callbackProxy }; 

Remote.method(params, callMetaData);

(调用元数据在脚本介绍中有解释)

换句话说,现在你作为callback函数传递过来的不是一个真正的callback,他只是一个做为代理的闭包,用来传递客户端的数据。

你可以用更简介的形式:

var dataFromBrowser = ...; 
Remote.method(params, { 
callback:function(dataFromServer) { 
callbackFunc(dataFromServer, dataFromBrowser); 
} 
});

good

Posted by Anonymous at Feb 01, 2008 15:29 | Reply To This
Site running on a free Atlassian Confluence Open Source Project License granted to WebWork China. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.3 Build:#808 May 29, 2007) - Bug/feature request - Contact Administrators