Каков наилучший способ замены сгенерированных ExtJS элементов DOM новыми элементами ExtJS? - PullRequest
1 голос
/ 01 декабря 2010

Я делаю среду PHP / ExtJS, которая генерирует базовый Javascript ExtJS при первом посещении страницы, а затем через вызовы AJAX манипулирует DOM.

Так что мне нужно иметь возможность заменить определенные элементы DOM, созданные ExtJS, новыми элементами DOM, созданными ExtJS.

В следующем примере я хочу заменить текст в region_center двумя панелями.

Тем не менее, renderTo только добавляет к элементу, в то время как applyTo полностью заменяет содержимое, что мешает мне добавить, например. 2 панели, так как вторая заменяет первую.

Как я могу легко манипулировать сгенерированным ExtJS Javascript, чтобы я мог заменить области экрана новым контентом, например, в меню, в котором щелкают панели, а center_region заменяется новым содержимым?

<!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">
        <script type="text/javascript" src="ext/adapter/ext/ext-base.js">
        </script>
        <script type="text/javascript" src="ext/ext-all-debug.js">
        </script>
        <script type="text/javascript" src="js/jquery-1.4.4.min.js">
        </script>
        <title>Test of RenderTo</title>
        <script type="text/javascript">
            Ext.onReady(function(){
                new Ext.Panel({
                    id: 'new_content1',
                    renderTo: 'region_center',
                    title: 'the title',
                    margins: '10 10 10 10',
                    html: 'content1 added by extjs'
                });
                new Ext.Panel({
                    id: 'new_content2',
                    renderTo: 'region_center',
                    title: 'the title',
                    margins: '10 10 10 10',
                    html: 'content2 added by extjs'
                });
            });
        </script>
    </head>
    <body>
        <h1 class="main">Test of renderTo:</h1>
        <div id="region_center" class=" x-panel x-border-panel" style="left: 220px; top: 43px; width: 1478px;">
            <div class="x-panel-bwrap" id="ext-gen9">
                <div class="x-panel-body x-panel-body-noheader" id="ext-gen10" style="padding: 10px; overflow: auto; width: 1456px; height: 620px;">
                    this is the original text and should be replaced
                </div>
            </div>
        </div>
    </body></html>

Ответы [ 2 ]

1 голос
/ 01 декабря 2010

Все классы, расширяющие Ext.Container (включая Ext.Panel), имеют метод add (), который можно использовать для добавления новых компонентов, а также remove () для их удаления.

0 голосов
/ 27 марта 2014

Я вижу, что в вашем коде вы использовали renderTo 'region_center'.Я надеюсь region_center должно быть div.Попробуйте включить renderTo: Ext.getBody() или renderTo: document.body., используя, чтобы ваша панель была добавлена.

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