Liferay弹出层如何将弹出页面的值返回

2016年03月29日 Liferay 暂无评论 阅读 3,541 views 次

在前面写过两篇关于如何在Liferay中进行弹出层的文章:

Liferay 6.1开发学习(十三):弹出层/弹出对话框的使用

Liferay 6.2弹出层

 

弹出之后,有时候我们有需求需要将当前弹出层的内容,写到父页面上,然后并关闭当前的弹出层。

首页弹出层的写法

如果要写一个返回值,并执行关闭的弹出层,这个的写法也有区别:
 Liferay.provide(
 window,
 '<portlet:namespace />editAnswer',
 function(id) {
 var dialogID = '<portlet:namespace />anser_edit_dialog';
 var dialog = Liferay.Util.Window.getById(dialogID);
 if (dialog!=null){
 dialog.destroy();
 };
 Liferay.Util.selectEntity(
 {
 dialog: {
 constrain: true,
 modal: true,
 destroyOnClose: true,
 width: 860
 },
 id: dialogID,
 title: '编辑回复',
 uri: '${editAnswerURL}&<portlet:namespace />answerId='+id
 }
 );
 }
 );

上面的代码是一个相对完整的示例,前面执行 dialog.destroy()是为了每次打开都是一个新的,不然如果页面上需要弹出多个,每个每次弹出的显示内容不一样,这样就不会实现,如果不加 dialog.destroy()就会每次弹出的都是第一个弹出的页面内容。

其中的URI里面是我们要弹出的目标的Portlet的地址,

弹出层中将值写到上级页面

在弹出层中将值写到上级页面,我们只需要在弹出层页面能够调用上级页面的JS代码即可。

调用上级页面的JS,在弹出层中这样写

Liferay.Util.getOpener().<portlet:namespace/>closePopup()

其中的getOpener().后面的是上级页面的函数,可以在这里将要传的值用JS参数的形式传递过去。

关闭弹出层

使用这个方法获取到弹出层对象,var dialog = Liferay.Util.Window.getById(dialogId);

然后destory:dialog.destroy()

 

用户头像

给我留言

您必须 登录 才能发表留言!

Copyright © IT人生录 保留所有权利.   主题设计 知更鸟 滇ICP备16001547号

用户登录

分享到: