Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Проблемы с getProvider (https://javascript.ru/forum/extjs/53242-problemy-s-getprovider.html)

marduk 26.01.2015 16:57

Проблемы с getProvider
 
Добрый день.
Делаю небольшую crm на базе desktop из примера
http://dev.sencha.com/ext/5.1.0/exam...top/index.html

Столкнулся с проблемой, когда используешь
Ext.state.Manager.setProvider(new Ext.state.LocalStorageProvider()) обязательно нужна перезагрузка страницы, для того чтобы к новому окну применились настройки.
Тоесть я открываю окно с таблицей, закрываю окно, открываю его по новой, а настройки не применяются, подскажите как их подгрузить без перезагрузки страницы.

Заранее благодарен за помощь )

marduk 27.01.2015 13:36

Ребят, ну очень нужна помощь, неужели никто не знает.
Мне по сути в app/gridWindow.js нужно в init принудительно заставить читать provider, но вот как я не нашел (

novikov 27.01.2015 18:37

может быть, использовать флаг stateful?

http://docs.sencha.com/extjs/5.1/5.1...w-cfg-stateful

код какой-нибудь покажите.

может быть, нужно заново отрендерить окно, после изменения настроек. Изменили, скажем, настройки и бросили событие.

попробуйте повесить обработчик на statechange провайдера.

Ext.state.Manager.setProvider(new Ext.state.LocalStorageProvider({
    listeners: {
         statechange: function(provider, key, value) {
             // запуск события
         }
    }
}))


приходится гадать...

возможно, кому-то Ваша ситуация покажется более ясной

marduk 28.01.2015 11:14

Код app.js, где происходит инициализация модулей и setProvider
Ext.define('Desktop.App', {
    extend: 'Ext.ux.desktop.App',

    requires: req,
    init: function() {
        // custom logic before getXYZ methods get called...
        Ext.state.Manager.setProvider(new Ext.state.LocalStorageProvider());

        this.callParent();
    },

    getModules : function(){
return [
                new Desktop.GridWindow(),
                new Desktop.GridUsers(),

В модуле по сути ничего особенного, окошко с гридом
createWindow : function(){
        var store = Desktop.GridUsers.getUserData();
        var desktop = this.app.getDesktop();
        var users = desktop.getWindow('grid-users');
        if(!users){
            users = desktop.createWindow({
                id: 'grid-users',
                title:'Пользователи',
                width:1100,
                height:480,
                iconCls: 'icon-grid',
                animCollapse:false,
                constrainHeader:true,
                layout: 'fit',
                items: [
                    {
                        border: false,
                        xtype: 'grid',
                        store: store,
                        stateful: true,
                        stateId: 'tab_users',
                        plugins: [
                              'gridfilters'
                        ]

marduk 28.01.2015 11:20

Цитата:

Сообщение от novikov (Сообщение 353753)
может быть, использовать флаг stateful?

он и так используется
Цитата:

Сообщение от novikov (Сообщение 353753)
может быть, нужно заново отрендерить окно, после изменения настроек. Изменили, скажем, настройки и бросили событие.

при закрытии окна отрабатывает директива closeAction: 'destroy' и при следующем открытии этого окошка оно рендерится по новой (может кстати в этом и проблема)


Часовой пояс GMT +3, время: 03:55.