🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
4 messages
4 total messages Started by Witold Zywica Tue, 17 Apr 2012 09:50
object + callback = problem
#51090
Author: Witold Zywica
Date: Tue, 17 Apr 2012 09:50
39 lines
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
#51091
Author: satellite
Date: Tue, 17 Apr 2012 11:13
21 lines
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
#51092
Author: witold.zywica
Date: Tue, 17 Apr 2012 12:04
22 lines
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
#51093
Author: witold.zywica
Date: Tue, 17 Apr 2012 12:07
25 lines
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