我已经定义了以下使用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中读取
答案 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');
}
});