Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

object + callback = problem

10 views
Skip to first unread message

Witold Zywica

unread,
Apr 17, 2012, 5:50:53 AM4/17/12
to
Witam
mam taką sytuację. Mam sobie obiekt w który mam metodę render().
Metoda sprawdza czy ma co wyrenderować i jeśli nie ma to wywołuje
funkcję loadData() . Funkcja ta pobiera z serwera dane zapisane w
JSON. Samego JSON'a pobieram za pomocą jQuery ($.getJSON) z
callbackiem który jest funkcją obiektu z którego wywołuje pobieranie
danych. I tu jest problem bo callback nie widzi zmiennych obiektu w
którym jest zadeklarowany.

Przykład:
function A() {
this.x = 3;

this.callback(data) {
this.x = data.x; //<- tu jest problem bo nie widac
this.x!!!
}

this.loadData = function () {
$.getJSON('skrypt.php', this.callback);
}

this.render = function () {
if (this.x != 3) {
this.loadData();
} else {
document.write('aaaa');
}
}

}

var a = new A();
a.render();


Ktoś może mi powiedzieć co robie zle? Jak w ramach obiektu pobrać
sobie dane i zapisać je do swoich zmiennych? Jak sobie radzić z
wywołaniami callbackow które zdają się być wywołaniami inline?

satellite

unread,
Apr 17, 2012, 7:13:29 AM4/17/12
to
On 2012-04-17 11:50, Witold Zywica wrote:

o, w tym wypadku wydaje mi sie ze problem jest tu :

> this.loadData = function () {
> $.getJSON('skrypt.php', this.callback);
> }

this w getJson jest this getJson - a nie Twojej funkcji - ale mozesz
uniknac 'porywania' this, w taki np. sposob :

function test(){

var that = this;

that.loadData = function () {
$.getJSON('skrypt.php', that.callback);
}


}

Message has been deleted

witold...@gmail.com

unread,
Apr 17, 2012, 8:07:58 AM4/17/12
to
Niestety nie wiele pomogło :(
Firebug pluje mi komunikatem, który mowi ze wewnątrz funkcji loadDataCallback this nie jest zdefiniowane. Jak mogę dostać się do składników obiektu z tej funkcji?
0 new messages