ExtJS - localStorage - PullRequest
       16

ExtJS - localStorage

1 голос
/ 31 октября 2011

У меня есть модель «Кино», и я храню данные в Ext.data.Store. Фильмы отображаются в gridPanel. После задания параметров поиска и нажатия кнопки магазин перезагружается.

Теперь я пытаюсь использовать localStorage. Скорее следует сохранить данные внутри функции слушателя:

listeners: {
                'click': function() {
                    movieDataStore.sync();
                    var textValue = Ext.getCmp("searchFieldId").getValue();

                    movieDataStore.load({
                        params : {
                            start : 0,
                            limit : 25,
                            t : textValue
                        }
                    });
                }
            }

Как мне это сделать?


ОБНОВЛЕНИЕ V1

Если бы я использовал Ext.state.LocalStorageProvider, я должен инициализировать переменную кэша следующим образом:

        var movieLocalCacheStore = Ext.state.LocalStorageProvider.create(); 

    var movieGridPanel = Ext.create('Ext.grid.Panel', {
        store : movieDataStore,

        tbar : [ 'Search', {
            xtype : 'textfield',
            name : 'searchField',
            id: 'searchFieldId',
            emptyText : 'Put movie title here',
            hideLabel : true,
            width : 200
        }, {
            xtype : 'button',
            text : 'Search',
            tooltip : 'Search for movie',
            listeners: {
                'click': function() {
                    var textValue = Ext.getCmp("searchFieldId").getValue();

                    movieDataStore.load({
                        params : {
                            start : 0,
                            limit : 25,
                            t : textValue
                        }
                    });
                    movieDataStore.sync();
                    movieGridPanel.getView().refresh();

                    //localStorage.setItem(textValue, movieDataStore.getAt(0));
                    movieLocalCacheStore.set(textValue, movieDataStore.getAt(0));

                }
            }
        } ]
    });

У меня есть модель с именем MovieModel. Это movieDataStore.getAt(0) правильный способ получить объект?

Как проверить, есть ли кэшированные результаты поиска (и загрузить в movieDataStore / movieGridPanel)?

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Вы можете создать экземпляр локального хранилища, вызвав статический метод create.Вот как вы можете это сделать:

var myLocalStore = Ext.state.LocalStorageProvider.create();  

Вы можете сохранить и извлечь значения, используя методы set и get .Вот пример:

myLocalStore.set('srhTxt',value);

Если у вас много параметров, вы можете объединить их в объект и сохранить.

0 голосов
/ 08 ноября 2011

Наконец, я решил это, используя переменную localStorage:

var textValue = Ext.getCmp("searchFieldId").getValue();                 

    var tmpRecord = localStorage.getItem(textValue);
    if(tmpRecord != null) {
                 ...
    } else {
        var movieRecord = {
                title : data.Title,
                year : data.Year,
                genre : data.Genre,
                plot : data.Plot,
                poster : data.Poster
            };

        localStorage.setItem(textValue, JSON.stringify(movieRecord));
        ...
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...