如何在打开对话框后执行某个功能?

问题描述:

我需要在打开一个对话框后执行一个功能。
我试着用下面的:如何在打开对话框后执行某个功能?

Liferay.Util.openWindow({ 
    dialog: {centered: true}, 
    id:'myID', 
    title: 'Title', 
    uri: _url 
}); 
alert("Loading Complete"); 

我得到alert()对话开幕之后,但在请求之前完成。
如何在加载对话框和请求完成后执行一个函数?

我试图与成功,但是不起作用:

Liferay.Util.openWindow({ 
    dialog: {centered: true}, 
    id:'myID', 
    title: 'Title', 
    uri: _url 
}).on("success", function(){ 
    alert("Loading Complete"); 
}); 
+0

你在那个弹出窗口中显示了什么?这是什么'_url'? –

+1

我还没有测试过这个,但是你可以尝试在你的对话框中听到'visibleChange'事件:{centered:true,on:{visibleChange:function(event){if(event.newVal){alert('dialogOpened “); }}}}'。 – stiemannkj1

如果您打开使用_url,我会推荐给调用functionToBeExecuted在该window.onload或jQuery的document.ready Portlet的本地视图/ JSP各自的jsp。

然而,如果不是,还有一个工作,以防万一,你可以用即尝试添加延迟(setTimeout)到functionToBeExecuted如下:

<a href="javascript: void(0);" onclick="javascript: showDialog();">Show Dialog</a> 

<script type="text/javascript"> 
    function showDialog(){ 
     AUI().ready(function(A) { 
      Liferay.Util.openWindow({ 
       dialog: {centered: true}, 
       id: 'myID', 
       title: 'Title', 
       uri: _url 
      }); 

      setTimeout(functionToBeExecuted, 3000); 
     }); 
    } 

    function functionToBeExecuted(){ 
     alert('Called!'); 
    } 
</script> 

注:functionToBeExecuted是的名称功能,你想打电话。