Toon posts:

Hulp in Sencha Touch

Pagina: 1
Acties:

  • erwin85
  • Registratie: Juli 2002
  • Laatst online: 25-05 12:59
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:

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.

  • erwin85
  • Registratie: Juli 2002
  • Laatst online: 25-05 12:59
niemand? Het zou echt fijn zijn als iemand mij uit de brand kan helpen.

Anoniem: 96523

Hoewel ik (nog) geen kennis heb van Sencha Touch (of Ext in het algemeen), lijkt het mij dat de fout gewoonweg zit in het feit dat de method 'bindStore' niet bestaat in het object dat je gebruikt.

Je zegt 'this.data.bindStore', terwijl 'this' geen Ext object is, maar een JSON object (of eigenlijk "handige" string).


Ik kan je helaas niet helpen met het antwoord, daar heb ik de kennis niet voor, maar ik hoop dat mijn uitleg jou helpt om het antwoord te vinden.

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 29-05 15:37

MueR

Moderator Devschuur®

is niet lief

Je hebt een console.log(this); staan. Wat is die this daar precies?

Anyone who gets in between me and my morning coffee should be insecure.
Breng nu uw applicatie naar de kloot. Dat is veel beter! Nu samen met klootopslag. Voor maar €9,95. Doei doei!



Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee