Показать сообщение отдельно
  #1 (permalink)  
Старый 18.10.2016, 03:01
Аватар для Sogl
Аспирант
Отправить личное сообщение для Sogl Посмотреть профиль Найти все сообщения от Sogl
 
Регистрация: 12.05.2016
Сообщений: 95

Окно редактирования и создания записи Grid
Всем привет!

Пытаюсь создать Window, в котором редактировалась бы выбранная строка таблицы.
Нашел вот такой пример:
http://examples.sencha.com/extjs/6.2...-child-session

Все бы замечательно, только есть одно но... там на 2 view используется один и тот же viewController, а создается окно так:
this.dialog = view.add({
            xtype: 'binding-child-session-form',
            viewModel: {
                data: {
                    title: record ? 'Edit: ' + record.get('name') : 'Add Company'
                },
            },
        });

        this.dialog.show();
    },


Кнопка отмены в окне вызывает другую ф-цию этого же ViewController:
onCancelClick: function () {
        this.dialog = Ext.destroy(this.dialog);
    },


Почему этого же? Есть вот такой комментарий там же в коде:
/**
 * This form is a popup window used by the ChildSession view. This view is
 * added as a contained window so we use the same ViewController instance.
 */


При переносе подобного кода к себе в приложение столкнулся с тем, что окно создается лишь поверх таблицы, а не поверх всего приложения/viewport'а, как мне нужно. Выкрутился так:
var main = Ext.ComponentQuery.query('app-main')[0];
this.dialog = main.add({


Также прописал себе во view окна тот же ViewController, т к по умолчанию он лез за функциями в main ViewController:
controller: 'employees',


Только вот теперь при закрытии окна `this.dialog` у меня `undefined` и обратиться к созданному диалогу я не знаю как. Можно нагородить еще ComponentQuery, но хочется нормального приятного решения. Сенча по умолчанию предлагает создать ViewController еще и для окна и часть кода разместить там.

Можно ли решить проблему, используя лишь один ViewController как в примере, на который я дал ссылку?

Последний раз редактировалось Sogl, 18.10.2016 в 08:14.
Ответить с цитированием