Toon posts:

[JS/jQuery] OO programmeren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben redelijk noob met Javascript en probeer op het moment een simpele RSS reader te maken met jQuery. Op de achtergrond een PHP proxy ivm cross-site-scripting maatregelen van een aantal browsers, maar dit is nu voor mijn code nog niet echt relevant.
Ik probeer mijn javascript een beetje mooi in te delen, met de functionaliteiten van een RSS feed in een klasse, zodat ik makkelijk meerdere feeds op een pagina kan hebben. Het probleem waar ik nu tegen aan loop is dat jQuery bijna alles met anonieme functies doet, en ik dan moeilijk terug naar het feed object kan refereren.
Een heel simpel voorbeeld is van de code die ik nu probeer in een klasse te krijgen is de volgende:
JavaScript:
1
2
3
4
5
6
$.get("mixed.xml", {}, function(xml) {
    $("item", xml).each(function(i) {
        // hier verwijst this dus naar de resultset van de jQuery functie
        alert($(this.find('title').text()));
    }
}

Dit werkt, maar hier kan ik weinig mee als ik de resultaten vervolgens in de bijbehorende HTML node wil gieten. Ook wil ik meerdere gegevens aan een specifiek feed object koppelen, zoals in dit geval de url, de laatste update, etc. De hele referentie van een eventueel parent object is weg zo gauw de anonieme functie in each() wordt aangeroepen. Mijn idee was dus om ipv een functie inline te definiëren, deze functie in mijn klasse te definiëren:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var feed = function()
{
    this.feedUrl = "mixed.xml";
    
    this.refresh = function()
    {
        // de variable 'xml' word nu ineens niet meer door $.get doorgegeven?
        $.get(this.feedUrl, {}, this.handleRSS(xml));
    }
    
    this.handleRSS = function (xml)
    {
        $("item", xml).each(function(i) {
            alert($(this.find('title').text()));
        });
    }
}

Echter nu geeft de code in feed.refesh een error, omdat de variable xml niet meer bekend is (deze word in het eerste voorbeeld gewoon gemaakt door $.get en netjes doorgegeven). Hoe kan ik jQuery dan wél netjes in een klasse gebruiken?

[ Voor 3% gewijzigd door Verwijderd op 29-11-2008 14:11 ]


Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27
Je gooit er nu een functie aanroep in ipv een functie referentie.

Probeer het eens met alleen this.handleRSS (hij zou die xml dan vanzelf als parameter mee moeten geven)

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ah dat was het inderdaad :D, geweldig!

Edit:
Hm zit meteen alweer vast, want hoe moet ik in de each() loop van handleRSS nou het feed object benaderen?

JavaScript:
1
2
3
4
5
6
this.handleRSS = function (xml)
{
    $("item", xml).each(function(i) {
        
    });
}

Ik heb al geprobeerd om hier ook een aparte functie in de klasse te maken genaamd 'handleItem', alleen als ik deze probeer aan te roepen meld jQuery:
'callback has no properties'
Het liefst doe ik dit met een inline functie, zodat ik neit voor elk loopje een nieuwe class method hoef aan te maken, alleen hoe krijg ik die referentie er nou door?

[ Voor 88% gewijzigd door Verwijderd op 29-11-2008 16:32 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kickje, wat is nou een goede methode om JQuery met OO programmeren te combineren?

Acties:
  • 0 Henk 'm!

  • m-kay
  • Registratie: December 2004
  • Laatst online: 16-06-2024

m-kay

kaas & aapjes

Verwijderd schreef op dinsdag 02 december 2008 @ 18:30:
kickje, wat is nou een goede methode om JQuery met OO programmeren te combineren?
Misschien de boel in een soort van modules stoppen? Zoals hier uitgelegd: http://yuiblog.com/blog/2007/06/12/module-pattern/

I look back and I'm amazed, that my thoughts were so clear and true, and three words went through my mind endlessly, repeating themselves like a broken record... you're so cool, you're so cool, you're so cool...


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op dinsdag 02 december 2008 @ 18:30:
kickje, wat is nou een goede methode om JQuery met OO programmeren te combineren?
Gewoon, standaard, vanille-JavaScript OO. JQuery biedt niks op het gebied van class creation of inheritance (wat ik wel zo fijn vind).
Pagina: 1