在Sencha touch中,我定义了一个商店:
Ext.define('TestApp.store.TokenStore', {
extend: 'Ext.data.Store',
config: {
model: 'TestApp.model.TokenModel',
autoLoad: true,
autoSync: true,
proxy: {
type: 'localstorage',
// The store's ID enables us to eference the store by the following ID.
// The unique ID of the Store will be the ID field of the Model.
id: 'TokenStore'
}
}
});
这家商店的模特:
Ext.define('TestApp.model.TokenModel', {
extend: 'Ext.data.Model',
config:{
fields: [
{name: 'id', type: 'int' },
{name:'token',type:'string'}
]
}
});
现在,在我的应用程序的启动功能中,我执行以下操作:
// Get the store
var tokenStore = Ext.getStore('TokenStore');
// Add a token to the store
tokenStore.add({'token': 1234});
// Retrieve that token back:
var token = tokenStore.getAt(0).get('token');
一切正常,我在控制台中看到了令牌的值,但我收到以下警告:
[WARN][Ext.data.Batch#runOperation] Your identifier generation strategy for the model does not ensure unique id's. Please use the UUID strategy, or implement your own identifier strategy with the flag isUnique.
我做错了什么?
答案 0 :(得分:1)
在模型中的配置中添加:
identifier: {
type: 'uuid'
},
Sencha Touch要求所有类中的每条记录都有一个标识符。基本上,这是一个为每条记录分配字符串的类。触摸源中有javascript类生成这些类。这些类必须声明自己是唯一的或不是。 uuid是最好的,它包含在sencha touch中,并宣称自己是唯一的(如果你看一下基于时间戳的数学,有充分的理由!)
您需要唯一标识符的原因是记录不会相互混淆,特别是在涉及DOM交互或通过代理保存/加载时。
答案 1 :(得分:0)
这将消除加载/保存的警告和后续问题,否则在同一商店进行多次保存/检索后会出现问题(商店最终会被破坏)
identifier: {
type: 'uuid',
isUnique : true
},
在Chrome中测试