ExtJS 6.2 - контроллер продолжает искать магазины в моем пути - PullRequest
0 голосов
/ 05 декабря 2018

Я новичок в extJS и некоторое время работаю в приложении.Моя проблема в том, что у меня есть приложение с архитектурой MVC, и, когда я устанавливаю контроллер, я объявляю de store.Но когда я запускаю это приложение в браузере, по какой-то причине контроллер пытается получить хранилище из папки моего контроллера.В моем приложении запущены другие контроллеры, и все они ищут магазин в папке магазинов.У кого-нибудь есть подсказка по этому вопросу?Спасибо

Ext.define('SGE.controller.staticData.AbstractController', {
    extend: 'Ext.app.Controller',

    requires: [
        'SGE.util.Util'
    ],

    stores: [
        'Actors',
        'staticData.Categories',
        'staticData.Cities',
        'staticData.Countries',
        'staticData.Languages'
    ],

    views: [
        'staticData.AbstractGrid',
        'staticData.Actors',
        'staticData.Categories',
        'staticData.Cities',
        'staticData.Countries',
        'staticData.Languages'
    ],

    init: function(application) {
        this.control({
            "staticdatagrid": {
                render: this.render,
                edit: this.onEdit
            },
            "staticdatagrid button[itemId=add]": {
                click: this.onButtonClickAdd
            },
            "staticdatagrid button[itemId=save]": {
                click: this.onButtonClickSave
            },
            "staticdatagrid button[itemId=cancel]": {
                click: this.onButtonClickCancel
            },
            "staticdatagrid button[itemId=clearFilter]": {
                click: this.onButtonClickClearFilter
            },
            "staticdatagrid actioncolumn": {
                itemclick: this.handleActionColumn
            },
            "citiesgrid button[itemId=clearGrouping]": {
                toggle: this.onButtonToggleClearGrouping
            }
        });

        this.listen({
            store: {
                '#staticDataAbstract': {
                    write: this.onStoreSync
                }
            }
        });

        if (!Ext.getStore('countries')) {
            Ext.create('SGE.store.staticData.Countries');
        }

        if (!Ext.getStore('languages')) {
            Ext.create('SGE.store.staticData.Languages').load();
        }

        if (!Ext.getStore('actors')) {
            Ext.create('SGE.store.staticData.Actors');
        }

        if (!Ext.getStore('categories')) {
            Ext.create('SGE.store.staticData.Categories');
        }
    },

    onStoreSync: function(store, operation, options){
        Packt.util.Alert.msg('Success!', 'Your changes have been saved.');
        console.log(store);
        console.log(operation);
        console.log(options);
    },

    render: function(component, options) {
        component.getStore().load();  

        if (component.xtype === 'citiesgrid' && component.features.length > 0){
            if (component.features[0].ftype === 'grouping'){
                component.down('toolbar#topToolbar').add([
                    {
                        xtype: 'tbseparator'
                    },
                    {
                        xtype: 'button',
                        itemId: 'clearGrouping',
                        text: 'Group by Country: ON',
                        iconCls: 'grouping',
                        enableToggle: true,
                        pressed: true
                    }
                ]);
            }
        }     
    },

    onEdit: function(editor, context, options) {
        context.record.set('last_update', new Date());
    },

    onButtonClickAdd: function (button, e, options) {
        var grid = button.up('staticdatagrid'),
        store = grid.getStore(),
        modelName = store.getProxy().getModel().modelName,
        cellEditing = grid.getPlugin('cellplugin');

        store.insert(0, Ext.create(modelName, {
            last_update: new Date()
        }));

        cellEditing.startEditByPosition({row: 0, column: 1});
    },

    onButtonClickSave: function (button, e, options) {
        button.up('staticdatagrid').getStore().sync();
    },

    onButtonClickCancel: function (button, e, options) {
        button.up('staticdatagrid').getStore().reload();
    },

    onButtonClickClearFilter: function (button, e, options) {
        button.up('staticdatagrid').filters.clearFilters();
    },

    handleActionColumn: function(column, action, view, rowIndex, colIndex, item, e) {
        var store = view.up('staticdatagrid').getStore(),
        rec = store.getAt(rowIndex);

        if (action == 'delete'){
            store.remove(rec);
            Ext.Msg.alert('Delete', 'Save the changes to persist the removed record.');
        }   
    },

    onButtonToggleClearGrouping: function (button, pressed, options) {

        var store = button.up('citiesgrid').getStore();

        if (pressed){
            button.setText('Group by Country: ON');
            store.group('country_id');
        } else {
            button.setText('Group by Country: OFF');
            store.clearGrouping();
        }
    }
});

Ответ браузера

введите описание изображения здесь

1 Ответ

0 голосов
/ 05 декабря 2018
  • Контроллер ExtJs извлекает указанные файлы хранилищ перед отображением своего пользовательского интерфейса.Предполагая, что вы не создали никаких файлов хранилища (предположим, что ваша функция init создала хранилище, если они не существуют), он сначала ищет файлы хранилища, чтобы загрузить их в память.
  • Другой возможный вариантПроблема может заключаться в том, что хранилище имеет другое пространство имен, чем в приложении, вам нужно будет указать полное имя класса, а также определить путь в конфигурации путей Loader или в методе setPath.
  • См. документ Магазины контроллеров ExtJs .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...