प्रोटोटाइप में AJAX अनुरोध के लिए खुद कॉलबैक तरीकों का उपयोग कर

वोट
0

मैं उचित वस्तुओं का उपयोग करने के कोड काम रिफैक्टर्ड है और अब मैं प्रोटोटाइप के Ajax.Request ठीक से काम करने के लिए नहीं मिल सकता है। नीचे दिए गए कोड है, यह YUI के DataTable के संदर्भ में काम कर रहा है:

SearchTable.prototype.setTableColumns = function (transport) {
      this.dataTableColumns = transport.responseText.evalJSON();
      this.dataTableCallback();
};

SearchTable.prototype.setTableConfiguration = function (transport) {
  this.dataTableConfiguration = transport.responseText.evalJSON();
  this.dataTableCallback();
};

SearchTable.prototype.show = function () {
  ....
  new Ajax.Request(this.dataProxy, {
    method: 'get',
    parameters: {
      format: 'json',
      param: 'columns'
    },
    onSuccess: this.setTableColumns
  });

 new Ajax.Request(this.dataProxy, {
   method: 'get',
   parameters: {
     format: 'json',
     param: 'configuration'
   },
   onSuccess: this.setTableConfiguration
  });
}
};

 SearchTable.prototype.dataTableCallback = function () {
        ....
 }

मेरी समस्या यह है कि dataTableCallbackकभी नहीं कहा जाता है। जाहिरा तौर पर यह एक अपवाद है कि फेंकने है this, अपरिभाषित है जो मुझे समझ में कर सकते हैं: कॉलबैक वस्तु के संदर्भ में कहा जाता है नहीं कर रहे हैं और इस तरह thisसौंपा कभी नहीं किया गया है। मैं curryfying कॉलबैक करने की कोशिश की लेकिन नाकाम रहे है।

सवाल यह है: कैसे मैं इस काम करने के लिए प्रबंधन कर सकते हैं?

16/06/2009 को 12:09
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
4

इसे इस्तेमाल करे:

onSuccess: this.setTableColumns.bind(this)
16/06/2009 को 12:18
का स्रोत उपयोगकर्ता

वोट
2

"इस" के लिए एक बंद बनाएँ:

SearchTable.prototype.show = function () {
  ....

  var self = this;

  new Ajax.Request(this.dataProxy, {
    method: 'get',
    parameters: {
      format: 'json',
      param: 'columns'
    },
    onSuccess: function(transport) { self.setTableColumns(transport); }
  });
16/06/2009 को 12:19
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more