Я занимаюсь разработкой мобильного приложения в Sencha Touch, и мне нужно хранить данные о предыдущих поисках локально без дублирования.
Поиск, хранение и отображение работает нормально, однако, если я выполняю один и тот же поиск дважды, запись дублируется в моем магазине.
Я ожидал, что "id" магазина сделает это, но что-то не так.
Вот код магазина.
Ext.regModel('sSaved', {
fields: [
{name: 'IDs', type: 'int'},
{name: 'Outward', type: 'string'},
{name: 'Return', type: 'string'},
{name: 'Pickup', type: 'string'},
{name: 'Destination', type: 'string'}
],
proxy: {
type: 'localstorage',
id:'IDs'
}
});
var savedJobs = new Ext.DataView({
store: new Ext.data.Store({
model: 'sSaved',
storeId: 'allSaved'
}),
tpl: new Ext.XTemplate(
'<tpl for=".">',
'<table class="item" style="margin:auto;">',
'<tr><td class="title">ID</td><td>{IDs}</td></tr>',
'<tr><td class="title">Outward</td><td>{Outward}</td></tr>',
'<tr><td class="title">Return</td><td>{Return}</td></tr>',
'<tr><td class="title">Pickup</td><td>{Pickup}</td></tr>',
'<tr><td class="title">Destination</td><td>{Destination}</td></tr>',
'</table>',
'</tpl>'
),
itemSelector: "table.item",
autoHeight:true,
emptyText: 'No Saved Jobs',
autoLoad: true
});
И код, который устанавливает магазин.
var fetched = Ext.decode(result.responseText);
var details = fetched.apiResponse.details;
savedJobs.store.load();
savedJobs.store.add({
"IDs":details.ID,
"Outward":details.Outward,
"Return":details.Return,
"Pickup":details.Pickup,
"Destination":details.Destination
});
savedJobs.store.sync();
Я мог бы обойти эту проблему, выполнив поиск в хранилище и проверив, существует ли значение перед добавлением, однако я уверен, что есть более простой метод.
Если этот поиск-> check-> add является подходом, который необходим, каков наименее ресурсоемкий способ?