2011-11-05 12 views
8

क्या jQuery के उपयोग से तत्व बनाने और उन्हें ईवेंट हैंडलर संलग्न करने के लिए हैंडलबार्स.जेएस हेल्पर के भीतर होना संभव है? मैं मददगार का उपयोग कर सक्रिय तत्व बनाने में सक्षम होना चाहता हूं।jQuery के साथ सक्रिय तत्व बनाने के लिए हैंडलबार्स.जेएस हेल्पर्स का उपयोग करना?

उदाहरण:

Handlebars.registerHelper("button", function(title) { 
    var button = $('<button>').text(title); 
    button.click(function() { 
     alert("Button " + title + " clicked."); 
    }); 
    return $('<div>').append(button).html(); 
}); 

हैंडल टेम्पलेट में मैं इस तरह बटन का दृष्टांत:

{{{button "Click Me!"}}} 

मैं समझता हूँ कि यह काम नहीं कर सकता, jQuery के एचटीएमएल के बाद से() फ़ंक्शन `निकाल देता है ' घटना हैंडलर ... लेकिन बस बटन वापस लौट रहा है या तो काम नहीं करता है। हैंडलबार्स हेल्पर्स को डोम नोड्स वापस करने में सक्षम होना चाहिए, लेकिन यह संभव नहीं है, है ना? मैंने बटन.get() वापस करने की कोशिश की, लेकिन सफलता के बिना।

कोई भी विचार?

उत्तर

3

आप क्या कर सकते हैं registerHelper के बाहर एक फ़ंक्शन बनाएं जिसे क्लिक करें। तो उस के लिए कोड इस तरह दिखेगा:

Handlebars.registerHelper("button", function (text) { 
    var button = $('<button></button>').text(text).attr('onclick', 'button_clickEvent()'); 
    return $('<div></div>').append(button).html(); 
}); 

var button_clickEvent = function() { 
    alert("Button " + $(this).text() + " clicked."); 
}; 
+0

धन्यवाद, यह काम करेगा लेकिन मुझे वास्तव में सहायक विधि में फ़ंक्शन बनाने की आवश्यकता है। अब मैं [KnockoutJS] (http://knockoutjs.com/) का उपयोग करता हूं जो इसे बहुत ही सुरुचिपूर्ण तरीके से और बहुत अधिक सामान संभालता है। –

+0

@StefanK। ठीक है, लेकिन क्या यह आपके प्रश्न का उत्तर देता है? – sinemetu1

+0

हां, करता है। धन्यवाद। –

0

अब जब कि MutationObservermore supported और webcomponents-lite इसके लिए एक स्वीकार्य polyfill है, तो आप उसका प्रयोग Handlebars खाके से बनाए गए तत्वों की एक पकड़ पाने के लिए कर सकते हैं। एक ही चीज़ के बारे में एक और हालिया प्रश्न के लिए my answer देखें।

संबंधित मुद्दे