替换始终只存储一个模型的Sencha Touch 2商店,模型直接链接到SessionStorage

时间:2014-04-25 18:45:39

标签: sencha-touch sencha-touch-2

我已经定义了以下使用SessionStorage的Sencha商店:

Ext.define('TestApp.store.SessionStore', {
    extend: 'Ext.data.Store',    
    config: {
        model: 'TestApp.model.SessionStoreModel',
        autoLoad: true,
        autoSync: true,
        proxy: {
            type: 'sessionstorage',
            id: 'SessionStore'
        }
    }
});

这家商店有以下型号:

Ext.define('TestApp.model.SessionStoreModel', {
    extend: 'Ext.data.Model',
    config:{
        identifier: {
            type: 'uuid'
        },
        fields: [
            { name:'token', type:'string'},
            { name:'auth', type:'boolean', defaultValue: false }
        ]
    }
});

这些想法是,

我将始终只有一个模型,而不是更多。

仅为一个模型设置商店似乎有点过分(我必须清除它,在使用它时计算它的索引)。

根据我的拙见,应该有一种方法可以让模型将数据直接保存到SessionStorage并引用它,而不是进化商店。

可以在Sencha Touch 2中完成吗?

更新

这是我无所作为的所作所为:

Ext.define('TestApp.model.TestModel', {
    extend: 'Ext.data.Model',
    config: {
        identifier: {
            type: 'uuid'
        },
        fields: [
            { name:'auth', type:'boolean', defaultValue: false }
        ],
        proxy: {
            type: 'sessionstorage'
        }
    }
});

保存模型数据:

//测试。

var testModel = Ext.create('TestApp.model.TestModel', {
            auth: 'La Playa'
        });

        testModel.save({
            scope: this,
            success: function() {
                console.log('TestModel success');
            },
            failure: function() {
                console.log('TestModel failure');
            },
            callback: function() {
                console.log('TestModel callback');
            }
        });

Reade model data:

 // Test.
        TestApp.model.TestModel.load(1, {
            scope: this,
            success: function(record, operation) {
                console.log('TestModel read success');
                console.log(record.get('auth'));
            },
            failure: function(record, operation) {
                console.log('TestModel read failure');
            },
            callback: function(record, operation) {
                console.log('TestModel read callback');
            }
        });

但它不起作用,无法从SessionStorage中读取

1 个答案:

答案 0 :(得分:0)

这可以在Sencha Touch 2中完成。

Ext.define('TestModel', {
    extend: 'Ext.data.Model',
    config: {
        identifier: {
            type: 'uuid'
        },
        fields: [
            {name: 'token', type: 'string'},
        ],
        proxy: {
            type: 'sessionstorage'
        }
    }
});

var testModel = Ext.create('TestModel', {
    token: 'Token'
});

var id;
testModel.save(function (record) {
    id = record.getId();
    console.log('id:' + record.getId());
});

TestModel.load(id, {
    failure: function (record, operation) {
        console.log('Failed...');
    },
    success: function (record, operation) {
        console.log('It worked');
    }
});