Как вызвать событие клика на «OK» Ext.Msg.alert? - PullRequest
0 голосов
/ 01 июня 2018

После успешного сохранения формы выдается предупреждение, которое выглядит следующим образом:

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

enter image description here

Как запустить click event от "OK" до javascript или extjs?

См. Программный обработчик вызова события кнопки? , сработало следующее, однако найти плохую идею для поиска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 голосов
/ 02 июня 2018

Вы можете перейти вниз по иерархии компонентов от Ext.Msg (или любого другого не единственного экземпляра окна сообщения, которое вы используете).В ExtJS 6 classic, путь будет таким:

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

Я сделал небольшую скрипку, которая показывает рабочее решение .

0 голосов
/ 02 июня 2018

Сначала всякий раз, когда вы будете показывать Ext.Msg.alert(), сохраняйте в переменной, как эта

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

Затем, после того, как вы можете получить кнопку ОК, используя msg.down('#ok'), этовернет кнопку OK.И у кнопки есть метод fireHandler(), так что вы можете использовать его для программного вызова обработчика.

В этом Fiddle я создал демо.

Примечание Я использовал функцию Ext.defer для запуска обработчика через 3 с.Вы можете изменить его в зависимости от ваших требований, когда захотите.

КОД 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);

    }
});
0 голосов
/ 01 июня 2018

Ниже приведен код для захвата события нажатия кнопки ОК:

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

...