在liferay中我们可能想使用模态弹窗。这时候我们可以这么实现。
<portlet:renderURL var="addJobPageUrl" windowState="<%=LiferayWindowState.POP_UP %>"> <portlet:param name="mvcPath" value="/html/recmanage/editjob.jsp"/> </portlet:renderURL> <aui:button value="测试按钮" onclick="popUpModal('<%=addJobPageUrl.toString()%>')"></aui:button>
<aui:script> Liferay.provide( window, 'showPopUp', function(url) { var instance = this; Liferay.Util.openWindow( { cache: false, dialog: { align: Liferay.Util.Window.ALIGN_CENTER, after: { render: function(event) { this.set('y', this.get('y') + 50); } }, width: 1000 }, dialogIframe: { id: 'modal', uri: url }, title: '人才信息', uri: url } ); }, ['liferay-util-window'] ); </aui:script>
Liferay.provide()的第二个参数即js的函数名
子窗口获取父窗口及调用父窗口的JS方法(假设父窗口方法名为changeLogo)的写法如下
<aui:script> Liferay.Util.getOpener().<portlet:namespace />changeLogo('<%= logoURL %>'); Liferay.Util.getWindow().hide(); </aui:script>