gpt4 book ai didi

animation - Dojo Dialog onEnd() 动画异常

转载 作者:行者123 更新时间:2023-12-04 02:28:09 25 4
gpt4 key购买 nike

我在动画序列期间遇到 Dojo Dijit Dialog .hide() 方法的问题。我正在使用带有 Tundra 主题的 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();
});
});
}
});

这会在 Firebug 上产生以下错误:

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

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

此错误的先前答案但使用 destroyRecursive 而不是 hide 表明它与动画结束前被销毁的对话框有关。我尝试使用 dojo.hitch() 和 setTimeOut,但这似乎不起作用。同样令人费解的是,我第一次使用 global_welcome.show()(由另一个按钮调用)打开此对话框并按下取消按钮时,它可以正常工作。第二次及之后,它会产生上述错误消息。此外,右上角的 dojo 对话框的默认关闭按钮永远不会导致此错误。也许我可以让 onShow 调用关闭按钮调用的方法?

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

最佳答案

问题出在您的onShow 方法中。您连接到要隐藏的点击事件,但永远不要断开它。当您再次打开该对话框时,您连接点击方法以再次隐藏该对话框。结果是当您第二次尝试关闭对话框时 hide 将被调用两次。第二次调用 hide 时会抛出错误,因为动画已经被销毁。

试试这个:

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

关于animation - Dojo Dialog onEnd() 动画异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12679110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com