receiveMessage()
在被联动组件中,开发者可以使用以下固定写法,来接收参数并进行处理:
window.on_dbd_init = function() { //此为固定写法,receiveMessage()必须在window.on_dbd_init内部调用
//调用receiveMessage()接收消息
window.DBDBusUtils.receiveMessage("setText", notifyHandler);
}
function notifyHandler(msg){
var data = msg.data; //获取参数
... ...//开发者在这里添加对接受到的参数进行处理以及后续操作的代码
}
在上面代码中,window.DBDBusUtils.receiveMessage("setText", notifyHandler)方法的第一个参数表示消息类型,固定使用默认值"setText" 。
第二个参数实际是一个回调函数,为function类型,通过实现这个回调函数,在该函数中对接收到的参数进行处理。
因此,开发者也可以参照上面代码,在调用receiveMessage()方法时传入自行实现的回调函数名,例如下面代码所示:
window.on_dbd_init = function() {
window.DBDBusUtils.receiveMessage("setText", myParamsHandler); //传入回调函数名myParamsHandler
}
function myParamsHandler(msg){ //实现回调函数myParamsHandler,对接收到的参数进行处理
var data = msg.data; //获取参数
... ... //对参数进行处理
}
另外,也可以调用receiveMessage()方法时直接实现一个匿名函数进行参数处理,例如下面代码所示:
window.on_dbd_init = function() {
window.DBDBusUtils.receiveMessage("setText", function(msg){ //实现一个匿名函数
var data = msg.data; //获取参数
... ... //对参数进行处理
});
}
下面是一个被联动的jsp组件示例代码:
<html>
<head>
</head>
<script language="javascript">
//实现getReportParams()方法,返回被联动组件接收的参数
function getReportParams(){
return '[{name:"r_year",value:""},{name:"r_month",value:""}]';
}
//接收消息
window.on_dbd_init = function() {
//调用receiveMessage()接收消息
window.DBDBusUtils.receiveMessage("setText", notifyHandler);
}
function notifyHandler(msg){
var data = msg.data; //获取参数
//遍历数据,显示在页面文本框中
for(var index in data){
var paramItem=data[index];
var textValue=$("#receive_msg").val();
textValue+="\n";
textValue+=paramItem.name+"="+paramItem.value;
$("#receive_msg").val(textValue);
$("#receive_msg").text(textValue);
}
}
</script>
<body>
<textarea id="receive_msg" style="width:100%;height:300px">显示接收到的联动消息:</textarea>
</body>
</html>