Thread View: pl.comp.lang.javascript
4 messages
4 total messages
Started by Witold Zywica
Tue, 17 Apr 2012 09:50
object + callback = problem
Author: Witold Zywica
Date: Tue, 17 Apr 2012 09:50
Date: Tue, 17 Apr 2012 09:50
39 lines
2192 bytes
2192 bytes
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?
Re: object + callback = problem
Author: satellite
Date: Tue, 17 Apr 2012 11:13
Date: Tue, 17 Apr 2012 11:13
21 lines
1384 bytes
1384 bytes
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);
}
}
Re: object + callback = problem
Author: witold.zywica
Date: Tue, 17 Apr 2012 12:04
Date: Tue, 17 Apr 2012 12:04
22 lines
1679 bytes
1679 bytes
W dniu wtorek, 17 kwietnia 2012 13:13:29 UTC+2 użytkownik satellite napisał:
> 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);
> }
>
>
> }
Re: object + callback = problem
Author: witold.zywica
Date: Tue, 17 Apr 2012 12:07
Date: Tue, 17 Apr 2012 12:07
25 lines
1886 bytes
1886 bytes
W dniu wtorek, 17 kwietnia 2012 13:13:29 UTC+2 użytkownik satellite napisał:
> 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);
> }
>
>
> }
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?
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads