extjs: вызов функции после модального диалога html dom готов - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть требование, когда при нажатии кнопки я должен вывести модальное диалоговое окно extjs, и после того, как HTML в модальном диалоговом окне будет готов, я хочу захватить элемент DOM, присутствующий в html-содержимом диалога.Ниже приведен HTML-контент:

<html>
<head>
<link rel="stylesheet" type="text/css" href="<path to extjs installation folder>\extjs\resources\css\ext-all.css"/>
<script type="text/javascript" src="<path to extjs installation folder>\extjs\adapter\ext\ext-base.js"></script>
<script type="text/javascript" src="<path to extjs installation folder>\extjs\ext-all.js"></script>
<script>
    Ext.onReady(function(){
        var button = Ext.get('modal-btn');
        button.on('click', showModal);
    });

    var showModal = function(){
        var win;
        if(!win){
            win = new Ext.Window({
                modal:true,
                layout:'fit',
                width:500,
                height:300,
                closeAction:'hide',
                plain: true,
                items: new Ext.Panel({
                    frame:true,
                    collapsible:true,
                    items:[{
                        html:'<object id="renderedObjId" width=760 height=350></object>'
                    }]
                }), 

                buttons: [{
                    text: 'Close',
                    handler: function(){
                        win.hide();
                    }
                }]
            });
        }
        win.show(this);
    }
</script>


</head>
<body>
<form name="modalDialogForm">
    <input type="button" id="modal-btn" value="Click"/><br /><br />
</form>
</body>
</html>

Я хочу захватить объект, присутствующий внутри HTML-содержимого модального диалога, представленного с помощью renderedObjId .Я обновил содержание этого HTML.Любое предложение будет действительно полезным.

1 Ответ

0 голосов
/ 28 ноября 2018

Итак, вы хотите получить HTML-контент.Вы можете использовать afterrender событие Ext.panel.Panel и получить свой элемент в обработчике.В FIDDLE показаны два способа.

items: new Ext.Panel({
    frame: true,
    collapsible: true,
    items: [{
         html: '<object id="renderedObjId" width=760 height=350></object>'
    }],
    listeners: {
        afterrender: function (cmp) {
            var htmlOb;
            // #1
            htmlOb = document.getElementById('renderedObjId');
            console.log(htmlOb.innerHTML);
            console.log(htmlOb.innerText);
            console.log(htmlOb.textContent);
            // #2
            htmlOb = Ext.get('renderedObjId').dom;
            console.log(htmlOb.innerHTML);
            console.log(htmlOb.innerText);
            console.log(htmlOb.textContent);
        }
    }
}),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...