如何在" OK"上触发点击事件。 Ext.Msg.alert?

时间:2018-06-01 15:14:25

标签: extjs extjs5 extjs6-classic

成功保存表单后,会触发警报并显示如下:

Ext.Msg.alert('Success','Changes saved successfully');

enter image description here

如何在" OK"上点击click event通过javascriptextjs

请参阅Programmatically call handler of a button event?,以下内容有效,但查找由button-id生成的extjs似乎不太明智。

var btn = Ext.getCmp('button-id');
var e = null; // we don't have any event, so let's use nothing
Ext.callback(btn.handler, btn.scope, [btn, e], 0, btn);

3 个答案:

答案 0 :(得分:1)

您可以从Ext.Msg(或您正在使用的任何非单例实例的消息框)向下查看组件层次结构。在ExtJS 6 classic中,要走的路是:

Ext.Msg.down('button[itemId=ok]').click();

我做了一个显示the working solution的小提琴。

答案 1 :(得分:1)

首先,只要您在此变量中显示Ext.Msg.alert()存储

var msg = Ext.Msg.alert('Success', 'Changes save successfully')

然后,您可以使用msg.down('#ok')获得确定按钮,这将返回OK按钮。并且按钮具有fireHandler()的方法,因此您可以使用它以编程方式调用处理程序。

FIDDLE 中,我创建了一个演示版。希望这有助于/指导您实现您的要求。

注意我使用Ext.defer函数在3秒后触发处理程序。您可以随时根据自己的要求进行更改。

CODE SNIPPET

Ext.application({
    name: 'Fiddle',

    launch: function () {
        var msg = Ext.Msg.alert('Success', 'Changes save successfully', function (btn) {
            if (btn == "ok") {
                console.log(btn);
            }
        });

        //Defer is just only for demo
        //You can put your logic based on requirement
        //I am just giving example of how to fire the event
        Ext.defer(function () {
            var buttonOk = msg.down('#ok')
            buttonOk.fireHandler(buttonOk);
        }, 3000);

    }
});

答案 2 :(得分:0)

下面是用于捕获OK按钮单击事件的代码:

Resource Exhausted error

以下是工作演示:https://codepen.io/anon/pen/BVojEX?editors=0010