使用sencha touch将数组数据对象存储在localStorage中

时间:2014-01-29 12:35:50

标签: javascript sencha-touch sencha-touch-2 local-storage sencha-architect

使用sencha touch,我想将我的数组列表数据存储在localStorage中,如图所示。

enter image description here

onStore刷新功能,如下图所示

enter image description here

我在BookStore刷新功能上将简单数据存储为LocalStorage中的Like Date,Id,Name。但是找不到将arrayObject直接存储到localStorage的方法。

2 个答案:

答案 0 :(得分:1)

我不确定我完全理解你的问题..

如果您想在本地商店中存储javascript对象,可以使用JSON.stringify()方法将javascript对象转换为字符串。

var testString = JSON.stringify(testObj); //Converts testObject to Json string.
localStorage.testString = testString; // Stores testString into local storage.

您可以从本地存储获取testString并通过

将其转换为javascript对象
var testObj = JSON.parse(localStorage.testString);

或者您可以使用

Ext.encode(); // Encodes an Object, Array to String.

Ext.decode(); // Decodes (parses) a JSON string to an object.

答案 1 :(得分:0)

您可以存储完整的对象,但如果您只想存储主题,则需要创建新模型。 定义用于存储主题的模型,或者您可以存储您正在获得的完整对象。

Ext.define('Demo.model.Subjects', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            { name: 'id', type: 'int' },
            { name: 'Subjects', type: 'auto' }
        ]
    }
});

定义本地商店

Ext.define('Demo.store.MySubjectLocalStore', {
    extend: 'Ext.data.Store',
    config: {
        storeId: 'mySubjectLocalStore',
        model: 'Demo.model.Subjects',
        autoLoad: true,
        clearOnPageLoad: true,
        proxy: {
            type: 'localstorage',
            id: 'demo-mySubjects-local-store'
        }
    }
});

将数据存储在本地商店

var subjectsLocal = Ext.getStore('mySubjectLocalStore');

//loop to get your subjects array from main Object then add each array to localstore 
//loop start
var subjects = //get it from parent object inside loop
var subjectsModel = Ext.create('Demo.model.Subjects', {
    Subjects : subjects,
    id: //use integer so that you can get by this id when you retrive  it
});

subjectsLocal.add(subjectsModel);
//loop End

subjectsLocal.sync();