всплывающее окно extjs6, ошибка при втором запуске - PullRequest
0 голосов
/ 14 ноября 2018

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

Это работает в первый раз, но когда я нажимаю на него во второй раз, я получаю ошибку НЕ МОЖЕТ ЧИТАТЬ НЕДВИЖИМОСТЬ 'viewModel' из NULL.

Может кто-то видит, что я делаю не так?

ошибка появляется, когда я добираюсь до this.tempWindow.show ()

ПРОСМОТР, это всплывающее окно, сетка, в которой расположено меню itemcontext

Ext.define('Window2', {
extend: 'Ext.window.Window',
xtype: 'window2',
title: 'Market Breakdown',
width: 600,
height: 600,
modal: true,
controller: 'portalRealtime-portalRealtime',
viewModel: {
    type: 'portalRealtimeVM'
},
items: [{
    xtype: 'grid',
    title: 'hello',
    width: 200,
    height: 200
}]
});

            xtype: 'grid',
            title: 'Details',
            itemId: 'detailsGridID',
            bind: {
                store: '{myDetailsStore}'
            },           
            flex: 3,
            margin: '5px 0px 0px 0px',
            ui: 'featuredpanel-framed',
            cls: 'custom-grid',
            height: '100%',
            collapsible: true,
            collapseDirection: 'left',
            listeners: {
                itemcontextmenu: 'showContextMenuDetails'
            },

CONTROLLER

   showContextMenuDetails: function (view, rec, node, index, e) {
    e.stopEvent();
    this.getContextMenuDetails(rec).show().setPagePosition(e.getXY());
    return false;
},

getContextMenuDetails: function (rec) {
    if (!this.contextMenu) {
        this.contextMenu = this.getView().add({
            xtype: 'contextMenuMarketDrilldownAccount',
            currentRecord: rec
        });
    }
    return this.contextMenu;
},

onContextButtonMarketDrilldown: function (item, e) {

    var menu = item.up('menu');
    var rec = menu.currentRecord;
    var bbSymbol = rec.get('BBSymbol');

    debugger;
    if (!this.tempWindow) {
        this.tempWindow = this.getView().add({
            xtype: 'window2',
        });
    }
    this.tempWindow.show();
},

1 Ответ

0 голосов
/ 14 ноября 2018

Попробуйте правильно настроить атрибуты viewModel и контроллера с вашим контроллером и viewModel.

Ext.define('Window2', {
    extend: 'Ext.window.Window',
    xtype: 'window2',
    title: 'Market Breakdown',
    width: 600,
    height: 600,
    modal: true,
    viewModel: {
        type: 'Window2' //Yout window viewModel
    },
    controller: 'Window2',    //Your window controller,
    items: [{
        xtype: 'grid',
        title: 'hello',
        width: 200,
        height: 200
    }]
});
...