Как я могу манипулировать содержимым панели extjs так же, как и элементом DOM? - PullRequest
3 голосов
/ 17 ноября 2010

На следующей странице extJS, когда я нажимаю кнопку, содержимое HTML Div "buttonInfo" изменяется правильно.

Я также хочу изменить содержимое панели, созданной с помощью extJS.

Однако, когда я изменяю содержимое панели, как делаю div, вся панель просто заменяется.

Как я могу изменить содержимое объекта панели из обработчика нажатия моей кнопки?

перед:

alt text

после

alt text

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css">
        <style type="text/css">
            body {
                padding: 20px;
            }
            div#infoBox {
                margin: 10px 0 0 0;
                width: 190px;
                height: 100px;
                background-color: lightblue;
                padding: 10px;
            }
            div#content {
                margin: 10px 0 0 0;
            }
            div.x-panel-body {
                padding: 10px;
            }
        </style>
        <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
        <script type="text/javascript" src="ext/ext-all-debug.js"></script>
        <title>Simple extJS</title>
        <script type="text/javascript">
            Ext.BLANK_IMAGE_URL = 'ext/resources/images/default/s.gif';
            Ext.onReady(function(){

                Ext.get('buttonInfo').on('click', function(){
                    Ext.get('infoBox').update('This is the <b>new</b> content.');
                    Ext.get('panel1').update('new info');
                    //Ext.get('panel1').html = 'new info111'; //doesn't work
                    //panel1.html = 'new info222'; //doesn't work
                });

                new Ext.Panel({
                    id: 'panel1',
                    renderTo: 'content',
                    width: '210px',
                    title: 'Extended Info',
                    html: 'original text',
                    collapsible: true
                });

            });            
        </script>
    </head>
    <body>
        <button id="buttonInfo">
            Show Info
        </button>
        <div id="infoBox">
        </div>
        <div id="content-wrapper">
            <div id="content"></div>
        </div>
    </body

>

Ответы [ 2 ]

8 голосов
/ 17 ноября 2010

Ext.get дает вам объект dom, вместо этого используйте Ext.getCmp, чтобы он возвращал объект Ext обратно, затем вы можете использовать метод обновления на панели:

Try:

Ext.getCmp ('panel1'). Update ('новая информация');

Надеюсь, это поможет.

0 голосов
/ 30 июля 2014

Попробуйте:

var Data = 'new info'; panel1.overwrite(panel1.body, Data); panel1.doComponentLayout();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...