Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.05.2011, 16:04
Интересующийся
Отправить личное сообщение для pauluss Посмотреть профиль Найти все сообщения от pauluss
 
Регистрация: 23.03.2010
Сообщений: 22

ExtJS 4.0.1 Изменение содержимого Viewport
Здравствуйте. Есть грабля - нужно изменить содержимое панельки viewport после того, как она отрендерилась и отобразилась. Не хочет зараза. Наваял такой примерчик:

Ext.onReady(function(){
viewport = Ext.create('Ext.Viewport', {
                id: 'layout',
                layout:'border',
                items:[
                    {
                        region:'center',
                        html:'<input type="button" onclick="putGrid()" value="button">',
                        margins:'5 5 5 0'
                    },
                    {
                        id:'gr',
                        region: 'east',
                        html: 'first html',
                        margins:'5 5 5 0'
                    }
                ]
           });
});

function putGrid()
{
    var layout = Ext.getCmp('layout');
    var a = Ext.getCmp('gr');
    a.html = 'new HTML';
    layout.doLayout();
}


При нажатии на кнопочку ничего не происходит. Абсолютно, код отрабатывает, ошибки нет, результата тоже
Подскажите плизь люди добрые, как победить хрень сию бесовскую.

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 30.05.2011, 16:39
Аспирант
Отправить личное сообщение для Allan Stark Посмотреть профиль Найти все сообщения от Allan Stark
 
Регистрация: 24.04.2010
Сообщений: 87

М... Сам только что начал осваивать этот фреймворк.
Но все же.

1. Попробуйте изменить id с 'layout' на что-нибудь позаковыристее, сам на подобное наткнулся, оказывается EXT сам в процессе работы создает кучу своих ID, иногда они могут перекрыться с пользовательскими.
2. Вместо
var layout = Ext.getCmp('layout');
var a = Ext.getCmp('gr');
a.html = 'new HTML';
layout.doLayout();

можно вроде проще:
Ext.get('gr').dom.innerHTML = 'new HTML';
Ext.get('layout').doLayout();
Ответить с цитированием
  #3 (permalink)  
Старый 31.05.2011, 10:49
Интересующийся
Отправить личное сообщение для pauluss Посмотреть профиль Найти все сообщения от pauluss
 
Регистрация: 23.03.2010
Сообщений: 22

Сообщение от Allan Stark Посмотреть сообщение
можно вроде проще:
Ext.get('gr').dom.innerHTML = 'new HTML';
Ext.get('layout').doLayout();
Да, но это крайний случай. Как-то нехорошо помещать что-то напрямую, минуя фреймворк. К тому же с текстом это просто пример, созданный для того, чтоб кода меньше было. В реальном проекте у меня там грид, который нужно забаиндить налету (что уже почти получилось), а потом поменять на лету разметку viewport со всем содержимым (над чем сейчас и долбаюсь)

Добавляь грид в div, который создал vireport это, на мой взгляд, не совсем правильно. К тому же есть в Ext механизмы layout которые хочется заюзать.
Ответить с цитированием
  #4 (permalink)  
Старый 01.06.2011, 01:01
Аспирант
Отправить личное сообщение для Allan Stark Посмотреть профиль Найти все сообщения от Allan Stark
 
Регистрация: 24.04.2010
Сообщений: 87

Хм, я просто вместо ваших четырех строк написал свои две, в остальном они делают ТО ЖЕ самое, читабельность кода минимум не ухудшилась, работать будет быстрее на исчезающе малую величину...
И таки мимо фреймворка ничего не идет, просто не используются лишние переменные/присваивания.

Может обменяемся аськами/скайпами/мессенджерами и прочей контактной ерундой для обмена опытом, раз наши пути постижения дао и силы данного фреймворка совпадают ?
Ответить с цитированием
  #5 (permalink)  
Старый 01.06.2011, 10:56
Интересующийся
Отправить личное сообщение для pauluss Посмотреть профиль Найти все сообщения от pauluss
 
Регистрация: 23.03.2010
Сообщений: 22

Да, строчки по сути те-же, просто для моего реального проекта не подходит ни один из вариантов. Это просто пример был, код в проекте длиннее, мало кто захочет столько читать, поэтому простейший пример и наваял. В реальном проекте у меня гриды в каждом из окошек viewport.
Можно конечно очистить div (который получаем через Ext.get('gr').dom) и забаиндить туда новый грид, но как-то это...по другому хочется. Пока что
Если не найду как через api сделать, буду так, куда же деваться

Насчет обменяться контактами, с удовольствием, я отправил личкой
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое изменение содержимого фрейма VetalStar Элементы интерфейса 3 21.12.2010 23:14
Москва, ищу JavaScript программиста отлично знающего ExtJS, от 10 USD / час. maximgb Работа 3 03.08.2010 14:34
Частичное изменение содержимого элемента kuhok Events/DOM/Window 28 07.09.2009 22:44