मैं कैसे prototype.js का उपयोग कर एक कॉलबैक फ़ंक्शन में एक पैरामीटर जोड़ सकता हूँ?

वोट
1

prototype.js का उपयोग करना, मैं जो एक निर्माता पर एक पैरामीटर होने जा रहा है एक कस्टम वस्तु बनाने:

var options = Object.extend({month: date[0],
                             year: date[1],
                             day: date[2],
                             oncalchange: update});
// update is defined like that :
var update = function(d){
    // bla bla
}

// Calling my class
var myObject = new myClass (options);

oncalchange विकल्प पर, मैं एक कॉलबैक फ़ंक्शन अद्यतन कहा जाता है, जो myClass के भीतर एक पैरामीटर लेता है।

अब, मैं अद्यतन समारोह के लिए एक अतिरिक्त पैरामीटर पारित करने के लिए चाहते हैं, लेकिन सीधे नहीं कक्षा में।

मैं ऐसा ही कुछ करना चाहते हैं:

// element is the parameter I want to add
var update = function(d, element){
    alert(element);
}

जाहिर है यह काम नहीं करता, मैं कैसे कुछ इसी तरह कर सकता है?

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


2 जवाब

वोट
1

मैं काफी यकीन है कि आप क्या हासिल करने की कोशिश कर रहे हैं, लेकिन कुछ इस तरह नहीं कर रहा हूँ?

var options = Object.extend({month: date[0],
                                 year: date[1],
                                 day: date[2],
                             oncalchange: function(d){ return update(d, 'somethingelse');}
                             });
08/06/2009 को 09:41
का स्रोत उपयोगकर्ता

वोट
1

प्रोटोटाइप में, आप बाँध समारोह (सभी कार्यों से संबंधित) का उपयोग मूल्यों में पूर्व भरने, और संदर्भ आवंटित करने के लिए कर सकते हैं। आप करी समारोह का उपयोग कर सकते आप संदर्भ पैरामीटर का उपयोग करने की जरूरत नहीं है के बजाय अगर

उदाहरण के लिए:

var options = Object.extend({month: date[0],
                                 year: date[1],
                                 day: date[2],
                             oncalchange: update.bind(this,arg1, arg2)});

या

var options = Object.extend({month: date[0],
                                 year: date[1],
                                 day: date[2],
                             oncalchange: update.curry(arg1,arg2)});

देखें http://www.prototypejs.org/api/function/bind बाँध बारे में अधिक जानकारी है, और के लिए http://www.prototypejs.org/api/function/curry curryad पर जानकारी के लिए

संपादित करें

अपने अद्यतन कार्य करने के लिए बदलने के लिए:

var update = function(element,d){
    alert(element);
}

तो तत्व करी का उपयोग कर पूर्व परिभाषित या इसके बाद के संस्करण के लिए बाध्य।

मैं कॉलबैक एक पैरामीटर के साथ एक समारोह की उम्मीद है मान लेते हैं और आप इसे एक दूसरे जो आप जब कॉलबैक की स्थापना को परिभाषित कर सकते लेना चाहते हैं। ऐसे मामले में, मानकों के क्रम बहुत महत्वपूर्ण है। करी और बाँध शुरू से ही प्री-लोड तर्क किया जा सकता है, और इस तरह के रूप में, पैरामीटर आप पहले से लोड करने के लिए अन्य मापदंडों में से किसी से पहले परिभाषित किया जाना चाहिए चीजों को साफ करता है कि चाहते हैं .. उम्मीद है कि।

08/06/2009 को 09:41
का स्रोत उपयोगकर्ता

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