Goedendag,
Voor mijn afstudeerproject ben ik bezig een mobiele applicatie te ontwikkelen in het Framework Sencha Touch.
Nou is dit een vrij ingewikkeld Framework waar ook bar weinig hulp bij is te vinden.
Op dit moment probeer ik de applicatie offline support te geven. Dat ik dus gebruik maak van de offline support en local storage in HTML5.
Ik heb al een lijst met data wat uit een JSON bestand komt in de local storage kunnen krijgen. Dit werkt dus ook offline. Nu heb ik alleen ook een grafiek die ik teken in Canvas. Deze grafiek maakt gebruik van een JSON bestand met data voor op de x-as en waarden voor op de Y as. Dit JSON bestand wordt niet ingeladen in een List view of een ander component binnen Sencha Touch. De grafiek krijgt de data direct binnen via een JSON store.
Ik probeer even aan de hand van een voorbeeld te laten zien wat ik heb nu:
In the this.each loop loopt die door elke record. Hij krijgt ook de juiste waarde terug. Wat in dit geval een object is met een datum en een waarde. Ik voeg deze objecten toe aan de data store. Dit ziet er zo uit:
Tot nu toe lijkst dit nog goed te gaan. In de Google Chrome developer zie ik dat de local storage gevuld wordt. Dan moet ik de data binden aan de store. En hier blijkt dat helemaal fout te gaan.
In het voorbeeld van mijn List view die wel werkte ziet dat er zo uit:
Hierin wordt de lijst opgehaald waarin alle items staan. Maar mijn JSON bestand staat niet in een list view. Ik heb hier this.data.bindStore geschreven, maar hier krijg ik dus een foutmelding op: Uncaught TypeError: Object [object Object] has no method 'bindStore'.
Ik hoop dat dit probleem een beetje te begrijpen is. Ik heb na veel zoeken ook op het forum van Sencha dit niet gevonden.
Graag jullie hulp.
Voor mijn afstudeerproject ben ik bezig een mobiele applicatie te ontwikkelen in het Framework Sencha Touch.
Nou is dit een vrij ingewikkeld Framework waar ook bar weinig hulp bij is te vinden.
Op dit moment probeer ik de applicatie offline support te geven. Dat ik dus gebruik maak van de offline support en local storage in HTML5.
Ik heb al een lijst met data wat uit een JSON bestand komt in de local storage kunnen krijgen. Dit werkt dus ook offline. Nu heb ik alleen ook een grafiek die ik teken in Canvas. Deze grafiek maakt gebruik van een JSON bestand met data voor op de x-as en waarden voor op de Y as. Dit JSON bestand wordt niet ingeladen in een List view of een ander component binnen Sencha Touch. De grafiek krijgt de data direct binnen via een JSON store.
Ik probeer even aan de hand van een voorbeeld te laten zien wat ik heb nu:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| // Data fondsen ophalen app.stores.grafiek.addListener('load', function(){ console.log("I think we are online"); app.stores.offlineGrafiek.proxy.clear(); var series = { name:"Robeco funds", pointStart: Date.UTC(2010,1,1), data: [] }; this.each(function (record) { var grafiek_data = app.stores.offlineGrafiek.add(record.data)[0]; console.log(record.data); }); app.stores.offlineGrafiek.sync(); console.log(this); this.data.bindStore(app.stores.offlineGrafiek); }); |
In the this.each loop loopt die door elke record. Hij krijgt ook de juiste waarde terug. Wat in dit geval een object is met een datum en een waarde. Ik voeg deze objecten toe aan de data store. Dit ziet er zo uit:
JavaScript:
1
2
3
4
5
6
7
| app.stores.offlineGrafiek = new Ext.data.Store({ model: 'app.models.grafiekModel', proxy: { type: 'localstorage', id: 'grafiek-data' } }), |
Tot nu toe lijkst dit nog goed te gaan. In de Google Chrome developer zie ik dat de local storage gevuld wordt. Dan moet ik de data binden aan de store. En hier blijkt dat helemaal fout te gaan.
In het voorbeeld van mijn List view die wel werkte ziet dat er zo uit:
JavaScript:
1
| app.views.select_fund.items.getAt(0).bindStore(app.stores.offlinefunds); |
Hierin wordt de lijst opgehaald waarin alle items staan. Maar mijn JSON bestand staat niet in een list view. Ik heb hier this.data.bindStore geschreven, maar hier krijg ik dus een foutmelding op: Uncaught TypeError: Object [object Object] has no method 'bindStore'.
Ik hoop dat dit probleem een beetje te begrijpen is. Ik heb na veel zoeken ook op het forum van Sencha dit niet gevonden.
Graag jullie hulp.