Я работаю с Sencha Touch 1.1.0 на Chrome, и это моя история:
Я получаю ответ json от сервера и сохраняю его в локальном хранилище.
здесь мой ответ Json
stcCallback1001({"success":true,
"magazines":[
{"magazine_id":"9","numero":1,"titre":"bla bla bla bla","articles":[{"article_id":1,"titre":"bee or not to bee"},{"article_id":2,"titre":"the sky is blue"}]},
{"magazine_id":"10","numero":12,"titre":"bli bli bli","articles":[{"article_id":1,"titre":"where is brian"},{"article_id":2,"titre":"do you want a cup of tea"}]}]})
как видите, есть двумерный массив. Там несколько журналов, и в каждом журнале есть несколько статей.
Вот моя модель
new Ext.regModel('magazines',{
fields : [
{name : 'magazine_id', type :'int'},
{name : 'numero', type:'int'},
{name : 'titreLong' , type : 'string'}
],
idProperty : 'magazine_id', //ClŽ primaire de la table,
hasMany:{
model:'articles',
name:'articles'
}
});
new Ext.regModel('articles',{
fields : [
{name : 'magazine_id', type :'int'},
{name : 'article_id', type :'int'},
{name : 'titre' , type : 'string'},
{name : 'Mimage', type :'string'},
{name : 'datePublicationFormat', type : 'string'}
],
idProperty : 'article_id', //ClŽ primaire de la table
belongsTo: 'magazines'
});
вот мой магазин местных жителей
offlinestore = new Ext.data.Store({
model: 'magazines',
autoLoad: true,
getGroupString : function(record) {
return record.get('titre');
},
proxy: {
type: 'localstorage',
id:'magazines_id'
},
}
});
вот мой магазин, который делает запрос и загружает данные в локальное хранилище
var articleStoreDist = new Ext.data.Store({
model:'magazines',
proxy : {
type: 'scripttag',
url :'http://webservive_to_call',
reader : {
type:'json',
root:'magazines'
}
},
autoLoad:true,
listeners :
{
load: function(){
offlinestore.getProxy().clear();
offlinestore.data.clear();
offlinestore.sync();
articleStoreDist.each(function(record,index){
offlinestore.add(record.copy());
});
offlinestore.sync();
offlinestore.load();
}
}
});
и как я пытаюсь показать все результаты:
var tpl = new Ext.XTemplate(
'<table width="97%" border="0" cellspacing="0" cellpadding="0" style="margin:0 auto;">',
'<tpl for=".">',
'<tr class="headerNumero">',
'<td colspan="3"><div style="width:120px;float:right;"><div style="border:1px solid #CCC;background:red;width:102px;height:34px;"></div></div><h1>#{numero} <span class="discret">{titreLong} {titre}{[xindex % 3 === 0 ? "even" : "odd"]}</span></h1></td>',
'</tr>',
'<tr class="rubriques">',
//'<tpl for="articles">',
// '<td><div class="commentaires"><span>1</span><h3>DŽcouverte</h3></div></td>',
//'<tpl>',
'</tr>',
'</tpl>',
'</table>'
home = new Ext.Panel({
//style:'background:#EFEEE7',
fullscreen:true,
layout:'fit',
items: [{
xtype: 'dataview',
autoHeight:true,
multiSelect: true,
store: offlinestore,
tpl:tpl,
itemSelector:'div.tpl'
}]
});
Результат:
Я получаю все название журнала, но в localStorage нет записи статьи.
Мне бы хотелось :
Как хранить данные «статьи» в локальном хранилище?
Как получить "статью" данных из локального хранилища?
привет
Немного (или нет) дополнительной информации, я получил это сообщение в консоли:
sencha-touch-debug.js:13028
Uncaught TypeError: Cannot read property 'parentNode' of undefined