Не создавать новое окно в extjs
Доброе время суток. Требуется помощь по EXTJS. Функция создает окно с некой информацией, в этой функции при onclik вызывается эта же функция, но грузится другая информация и создается еще одно окно. Мне нужно, чтобы информация грузилась в существующие окно и не создавалось новое. Надеюсь на вашу помощь.
|
Нужно больше кода. Куда грузится, какая информация? Зачем функция по созданию окна вызывает сама себя? Кажется проблема тут больше в структуре приложения чем во владении фреймворком
|
Цитата:
function showWindow(w,h,title,m,s,close){ if(!win){ var win = new Ext.Window({ width: w, height: h, title: title, html:m, autoScroll: true, layout:'fit', bodyStyle:{'background-color': '#e4e4e4','background': s} }) }} вот, функция рабочая, никаких проблем нету. Нужно всего-лишь, чтобы при повторном вызове данной функции, не открывалось новое окно, а все происходило в существующем. |
Как видно из магического оператора new этот код не просто вызывает открытие окна, а создает новое окно.
Если просто взять и переписать ее так чтобы она работала уже с существующим окном, то это может повлечь за собой магические изменения по всему проекту, особенно если там все запущено в части структуры. Тем более там упоминались какие-то рекурсивные вызовы. Надеюсь Вы это понимаете. Если вы все же хотите этого, то всего лишь надо создать экземпляр этого окна на более высоком уровне видимости, доступном функции, а на уровне функции изменять соответствующие его свойства, а не создавать новое окно. Это опять же не вопрос фреймворка, это вопрос базовых концепций программирования и понимания логики приложения. |
Цитата:
|
Вы хотели сказать "я новичок в программировании", не так ли?
Проблема-то тут не в ExtJs. Код мне писать влом, потмоу что это не поможет, будет тупо работой за вас, да и данных маловато - здесь пахнет куском большой программы. Зато я могу понаркоманить: Сейчас есть: Функция ПоказатьГнома(цвет){ Рожаем Гнома с колпаком нужного цвета. Показываем гнома; } Вы спрашиваете, что сделать чтобы у меня гном не рожался, а использовался старый. Все просто! Рожаем гнома Васю; Функция ПоказатьГнома(цвет){ Берем гнома Васю; Надеваем на него колпак с нужным цветом; } Вот только если где-то в коде после того как показать гнома, например сталкивают его в кислоту, то придется этот кусок переписывать, иначе колпак на несуществующем Васе не поменяешь. |
Цитата:
|
Цитата:
if(!win){поэтому новое окошко создается каждый раз. либо сделайте переменную глобальной (плохая практика), либо храните ссылку на окно в свойстве подходящего по смыслу объекта. function showWindow(w,h,title,m,s,close){ if(!App.win){ App.win = new Ext.Window({ width: w, height: h, title: title, html:m, autoScroll: true, layout:'fit', bodyStyle:{'background-color': '#e4e4e4','background': s} }) }} |
с этим разобрался. спасибо.
|
Часовой пояс GMT +3, время: 21:00. |