Liferay 6.2模态在关闭时添加回调

时间:2014-03-18 17:50:41

标签: javascript liferay yui liferay-aui

我需要在使用此javascript代码创建的关闭(隐藏)模式窗口上执行泛型函数(console.log):

    YUI().ready(function(A) {
        YUI().use('aui-base','liferay-util-window', function(A) {
            Liferay.Util.Window.getWindow(
                {
                    title : title,
                    uri: url,
                    dialog: {
                        cache: false,
                        modal: true
                    }
                }
            ).on('hide', function() {
                  console.log("Modal closed")});

        });
    });

' URL '和' 标题'是从上面的代码传递的两个变量 它不起作用。
有什么建议吗?

3 个答案:

答案 0 :(得分:3)

只有将 destroyOnHide 对话框选项设置为 true ,才能生效。

默认设置为false,因此只会隐藏弹出窗口。

见下文:

YUI().ready(function(A) {
    YUI().use('aui-base','liferay-util-window', function(A) {
        Liferay.Util.Window.getWindow({
            title : title,
            uri: url,
            dialog: {
                destroyOnHide: true,
                cache: false,
                modal: true
            }
        }).after('destroy', function(event) {
                alert('DESTROY MODAL!');
        });
    });
});

然后您可以像往常一样使用 after()方法拦截销毁事件。

答案 1 :(得分:1)

您可以将on('hide'替换为:

YUI().ready(function(A) {
    YUI().use('aui-base','liferay-util-window', function(A) {
        Liferay.Util.Window.getWindow(
            {
                title : title,
                uri: url,
                dialog: {
                    cache: false,
                    modal: true
                }
            }
      ) on: {
      close: function(event) {
              console.log("Modal closed")});

    });
});

答案 2 :(得分:0)

在关闭对话框时调用的正确事件是destroy事件。

Liferay Window扩展了A.Componentdestroy事件。事实上,关闭一个Window,正确的方法是调用desploy()方法。

AUI().ready(function(A) {
    AUI().use('aui-base','liferay-util-window', function(A) {

        Liferay.Util.Window.getWindow(
            {
                title : title,
                uri: url,
                dialog: {
                    cache: false,
                    modal: true
                }
            }
        ).after('destroy', function() {
              console.log("Modal closed");
        });

    });
});