Javascript.RU

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

Не создавать новое окно в extjs
Доброе время суток. Требуется помощь по EXTJS. Функция создает окно с некой информацией, в этой функции при onclik вызывается эта же функция, но грузится другая информация и создается еще одно окно. Мне нужно, чтобы информация грузилась в существующие окно и не создавалось новое. Надеюсь на вашу помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 28.04.2014, 14:48
Аватар для Makarov
Профессор
Отправить личное сообщение для Makarov Посмотреть профиль Найти все сообщения от Makarov
 
Регистрация: 08.07.2013
Сообщений: 212

Нужно больше кода. Куда грузится, какая информация? Зачем функция по созданию окна вызывает сама себя? Кажется проблема тут больше в структуре приложения чем во владении фреймворком
Ответить с цитированием
  #3 (permalink)  
Старый 28.04.2014, 15:18
Интересующийся
Отправить личное сообщение для programmer_rulit Посмотреть профиль Найти все сообщения от programmer_rulit
 
Регистрация: 28.04.2014
Сообщений: 22

Сообщение от Makarov Посмотреть сообщение
Нужно больше кода. Куда грузится, какая информация? Зачем функция по созданию окна вызывает сама себя? Кажется проблема тут больше в структуре приложения чем во владении фреймворком
Вот код, который вызывает открытие окна
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}
                })   
  
        }}


вот, функция рабочая, никаких проблем нету. Нужно всего-лишь, чтобы при повторном вызове данной функции, не открывалось новое окно, а все происходило в существующем.
Ответить с цитированием
  #4 (permalink)  
Старый 28.04.2014, 15:42
Аватар для Makarov
Профессор
Отправить личное сообщение для Makarov Посмотреть профиль Найти все сообщения от Makarov
 
Регистрация: 08.07.2013
Сообщений: 212

Как видно из магического оператора new этот код не просто вызывает открытие окна, а создает новое окно.

Если просто взять и переписать ее так чтобы она работала уже с существующим окном, то это может повлечь за собой магические изменения по всему проекту, особенно если там все запущено в части структуры. Тем более там упоминались какие-то рекурсивные вызовы. Надеюсь Вы это понимаете.

Если вы все же хотите этого, то всего лишь надо создать экземпляр этого окна на более высоком уровне видимости, доступном функции, а на уровне функции изменять соответствующие его свойства, а не создавать новое окно. Это опять же не вопрос фреймворка, это вопрос базовых концепций программирования и понимания логики приложения.
Ответить с цитированием
  #5 (permalink)  
Старый 28.04.2014, 15:48
Интересующийся
Отправить личное сообщение для programmer_rulit Посмотреть профиль Найти все сообщения от programmer_rulit
 
Регистрация: 28.04.2014
Сообщений: 22

Сообщение от Makarov Посмотреть сообщение
Как видно из магического оператора new этот код не просто вызывает открытие окна, а создает новое окно.

Если просто взять и переписать ее так чтобы она работала уже с существующим окном, то это может повлечь за собой магические изменения по всему проекту, особенно если там все запущено в части структуры. Тем более там упоминались какие-то рекурсивные вызовы. Надеюсь Вы это понимаете.

Если вы все же хотите этого, то всего лишь надо создать экземпляр этого окна на более высоком уровне видимости, доступном функции, а на уровне функции изменять соответствующие его свойства, а не создавать новое окно. Это опять же не вопрос фреймворка, это вопрос базовых концепций программирования и понимания логики приложения.
Я новичок в extjs, именно поэтому и прошу помощи. Не могли бы Вы на примерах показать?
Ответить с цитированием
  #6 (permalink)  
Старый 28.04.2014, 16:05
Аватар для Makarov
Профессор
Отправить личное сообщение для Makarov Посмотреть профиль Найти все сообщения от Makarov
 
Регистрация: 08.07.2013
Сообщений: 212

Вы хотели сказать "я новичок в программировании", не так ли?
Проблема-то тут не в ExtJs.
Код мне писать влом, потмоу что это не поможет, будет тупо работой за вас, да и данных маловато - здесь пахнет куском большой программы.

Зато я могу понаркоманить:

Сейчас есть:
Функция ПоказатьГнома(цвет){
         Рожаем Гнома с колпаком нужного цвета.
         Показываем гнома;
}


Вы спрашиваете, что сделать чтобы у меня гном не рожался, а использовался старый. Все просто!

Рожаем гнома Васю;
Функция ПоказатьГнома(цвет){
    Берем гнома Васю;
    Надеваем на него колпак с нужным цветом;
}


Вот только если где-то в коде после того как показать гнома, например сталкивают его в кислоту, то придется этот кусок переписывать, иначе колпак на несуществующем Васе не поменяешь.
Ответить с цитированием
  #7 (permalink)  
Старый 28.04.2014, 16:10
Интересующийся
Отправить личное сообщение для programmer_rulit Посмотреть профиль Найти все сообщения от programmer_rulit
 
Регистрация: 28.04.2014
Сообщений: 22

Сообщение от Makarov Посмотреть сообщение
Вы хотели сказать "я новичок в программировании", не так ли?
Проблема-то тут не в ExtJs.
Код мне писать влом, потмоу что это не поможет, будет тупо работой за вас, да и данных маловато - здесь пахнет куском большой программы.

Зато я могу понаркоманить:

Сейчас есть:
Функция ПоказатьГнома(цвет){
         Рожаем Гнома с колпаком нужного цвета.
         Показываем гнома;
}


Вы спрашиваете, что сделать чтобы у меня гном не рожался, а использовался старый. Все просто!

Рожаем гнома Васю;
Функция ПоказатьГнома(цвет){
    Берем гнома Васю;
    Надеваем на него колпак с нужным цветом;
}


Вот только если где-то в коде после того как показать гнома, например сталкивают его в кислоту, то придется этот кусок переписывать, иначе колпак на несуществующем Васе не поменяешь.
как раз таки в программировании не новичок. Это не "кусок большой программы", как было написано выше. Просьба была о помощи, а не тупо поиздеваться. Не в состоянии помочь - не пишите, может найдется человек, способный помочь.
Ответить с цитированием
  #8 (permalink)  
Старый 28.04.2014, 20:00
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

Сообщение от programmer_rulit Посмотреть сообщение
Вот код, который вызывает открытие окна
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}
                })   
  
        }}


вот, функция рабочая, никаких проблем нету. Нужно всего-лишь, чтобы при повторном вызове данной функции, не открывалось новое окно, а все происходило в существующем.
очевидно же все ..у вас переменная win локальная. и когда вызывается функция это условие всегда true:
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}
                })   
  
        }}
Ответить с цитированием
  #9 (permalink)  
Старый 29.04.2014, 09:10
Интересующийся
Отправить личное сообщение для programmer_rulit Посмотреть профиль Найти все сообщения от programmer_rulit
 
Регистрация: 28.04.2014
Сообщений: 22

с этим разобрался. спасибо.

Последний раз редактировалось programmer_rulit, 29.04.2014 в 11:11.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открыть новое окно (вкладку) с текстом из div-а с определенным ID Globus Элементы интерфейса 6 04.03.2014 19:56
Открыть новое окно после заполнения формы Mateus Серверные языки и технологии 16 21.02.2013 12:09
Возможно ли открыть новое окно таким образом, чтобы отображалось только нужный кусок? deanisa Events/DOM/Window 1 20.06.2012 20:12
Тоже про новое окно websharik Firefox/Mozilla 3 14.12.2011 16:10
Новое окно с рисунком Vilmos Элементы интерфейса 2 24.06.2009 23:59