2012-05-03 21 views
14

क्या हैंडलबार टेम्पलेट में इनलाइन स्क्रिप्ट रखने का कोई तरीका नहीं है?हैंडलबार टेम्पलेट के भीतर इनलाइन जावास्क्रिप्ट

<script type="text/x-handlebars"> 
    I'm a row of type "foo" 
    <script type="text/javascript">alert('hi');</script> 
</script> 

जब उपर्युक्त टेम्पलेट प्रस्तुत करता है, तो इनलाइन स्क्रिप्ट हटा दी जाती है।

जो मैं करने की कोशिश कर रहा हूं वह पृष्ठ पर Disqus विजेट शामिल है। विजेट मूल रूप से कुछ मार्कअप + डिसकस स्क्रिप्ट है।

विजेट को मेरे ऐप के उप-दृश्य में शामिल किया जाना है। सबव्यूफ डिफ़ॉल्ट रूप से दिखाई नहीं दे रहा है लेकिन मेरे एम्बर ऐप कोड में कुछ तर्क के अनुसार प्रदर्शित होता है।

उत्तर

10

आपको उस विजेट को एक कस्टम एम्बर में लपेटना होगा। इसे तुरंत चालू करने और इसे डीओएम में जोड़ने के लिए, रैपर व्यू के किया गया है InsertElement में। एम्बर उम्मीद करता है, विशेष रूप से हैंडलबार्स टेम्पलेट्स के अंदर, डीओएम हेरफेर पर पूर्ण नियंत्रण रखने के लिए, और यह हैडलबार्स जादू के संयोजन के साथ, और एम्बर। निर्माण देखें। एक बार जब आप अपने customview परिभाषित किया है:

MyApp.DisqusView = Em.View.extend({ 
    didInsertElement: function() { 
     // create widget and append it to this.$() 
    } 
}); 

आप अपने हैंडल टेम्पलेट में इसका इस्तेमाल कर सकते हैं:

{{view MyApp.DisqusView}} 

आपके व्यू , स्क्रिप्ट टैग नहीं जोड़ना चाहिए सुरक्षा की दृष्टि से, बल्कि किसी भी अमल करना चाहिए जेएस सीधे विजेट डालने के लिए।

+0

+1, और AFAIK, हैंडलबार्स का विचार एक तर्क-कम टेम्पलेट्स है – louiscoquio

+0

@louiscoquio मेरे हैंडलबार टेम्पलेट में कोई तर्क नहीं है। टेम्पलेट दिखाने के लिए जेएस में तर्क है। टेम्पलेट में सिर्फ एक स्क्रिप्ट टैग है। – Rajat

+0

@ राजत मैंने गलती की है, मेरी माफ़ी। – louiscoquio

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