道场对话框onEnd()动画例外(Dojo Dialog onEnd() animation exc

2019-09-23 07:36发布

我已经与动画序列期间道场Dijit的对话框.hide()方法中的问题。 我使用的Dojo 1.7与腾的主题。 我在我的对话框,关闭对话框取消按钮。

        var global_welcome = new Dialog({
            id: 'global_welcome',
                style: "width: 750px",
            draggable: false,

        content: '<button type="button" id="global_welcomeCancel"> Cancel </button>',
        onShow : function () {
                                on(dojo.byId('global_welcomeCancel'), "click", function (evt) {
                                    dojo.stopEvent(evt);
                                    global_welcome.hide();   
                                   });              
                                 });
        }
    });

这将产生对萤火虫以下错误:

exception in animation handler for: onEnd                  fx.js (line 152)

TypeError: this._fadeOutDeferred is undefined
this._fadeOutDeferred.callback(true);

上一页回答这个错误,但与destroyRecursive,而不是隐藏表明,它具有与动画完成之前被销毁对话框做。 我试着用dojo.hitch()和setTimeout的,但似乎并没有工作。 还令人不解的是,我第一次打开使用global_welcome.show()这个对话框(由另一个按钮调用),然后按下取消按钮,它的工作原理没有错误。 在第二时间,之后,它产生的上述错误信息。 此外,对于道场对话在右上角的默认的关闭按钮都不会出现此错误。 也许我可以只是昂秀调用关闭按钮调用的方法呢?

有人可以帮我吗? 提前致谢!

Answer 1:

问题是在你onShow方法。 连线到click事件隐瞒,但从来没有断开。 当你再次打开的对话框中,你连线的Click方法再次隐藏对话框。 其结果是,当你试图关闭对话框第二次皮会被调用两次。 错误获取与第二次调用来隐藏因为动画已经销毁抛出。

尝试这个:

var signal = on(dojo.byId('global_welcomeCancel'), "click", function (evt) {
    dojo.stopEvent(evt);
    signal.remove();
    global_welcome.hide();   
}); 


文章来源: Dojo Dialog onEnd() animation exception