Почему этот код ExtJS получает ошибку "this.el is null"? - PullRequest
1 голос
/ 09 февраля 2011

Я хочу просто иметь возможность нажать кнопку и выполнить некоторый код ExtJS для тестирования, но этот код ExtJS выдает мне ошибку this.el is null. Что мне нужно сделать, чтобы этот код работал?

main.js:

Ext.onReady(function() {

    var button = new Ext.Button('button-div', {
        text: 'hello',
        handler: function() {
            alert('pressed');
        }
    });

    viewport = new Ext.Viewport({
        layout: 'border',
        items: [ button ]
    });

    viewport.doLayout();

});

HTML:

<!DOCTYPE html>
<html>
    <head>
        <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/main.js"></script>
    </head>
    <body>

    </body>
</html>

Рабочий код:

Спасибо за указатель @Mchl, теперь он работает с этим кодом:

Ext.onReady(function() {

    var button = new Ext.Button({
        text: "Click this",
        handler: function() {
            alert('pressed');
        }
    });

    var regionContent = new Ext.Panel({
        region: 'center',
        padding:'10',
        autoScroll: true,
        items: [ button ]
    });

    viewport = new Ext.Viewport({
        layout: 'border',
        items: [ regionContent ]
    });

    viewport.doLayout();
});

1 Ответ

7 голосов
/ 09 февраля 2011

Вы используете layout: 'border', который использует ваш видовой экран Ext.layout.BorderLayout.В документации для этого макета вы найдете следующее примечание:

  • Любой контейнер, использующий BorderLayout , должен иметь дочерний элемент с region:'center'.Размер дочернего элемента в центральной области всегда будет изменен, чтобы заполнить оставшееся пространство, не используемое другими областями в макете.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...