【问题标题】:How to fire an click event on the "OK" of Ext.Msg.alert?如何在 Ext.Msg.alert 的“OK”上触发点击事件?
【发布时间】:2019-07-08 06:32:58
【问题描述】:

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

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

如何通过javascriptextjs 在“OK”上触发click event

参考Programmatically call handler of a button event?,以下方法有效,但是找出由extjs 生成的button-id 看起来不太好。

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);

【问题讨论】:

标签: extjs extjs5 extjs6-classic


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    首先,每当您将显示Ext.Msg.alert() 存储在这样的变量中

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

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

    在这个Fiddle,我创建了一个演示。

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

    代码片段

    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);
    
        }
    });
    

    【讨论】:

    • Alexander 的回答更好,因为它不需要 var 来跟踪它。
    【解决方案3】:

    下面是捕获OK按钮点击事件的代码:

    Ext.Msg.alert('Name', 'Please enter your name:', function(btn, text){
        if (btn == 'ok'){
            console.log("OK clicked");
            // you code here
        }
    });
    

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

    【讨论】:

    • 无法在Ext.Msg.alert中添加代码,因为它也用于其他情况
    • @caot 你是什么意思?
    猜你喜欢
    • 2019-12-09
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 2011-01-23
    • 2018-11-23
    • 1970-01-01
    相关资源
    最近更新 更多