2012-09-24 14 views
48

मैं उल्का का उपयोग कर एक कस्टम सहायक बनाने की कोशिश कर रहा हूं।उल्का के साथ हैंडलबार सहायक में एकाधिक पैरामीटर का उपयोग कैसे करें?

Template.myTemplate.testHelper = function(foo, bar, options) { 
    console.log(foo); 
    console.log(bar); 
} 

मेरे टेम्पलेट की तरह दिखता है: https://github.com/meteor/meteor/wiki/Handlebars

मैं इस प्रकार के रूप में मेरे सहायक को परिभाषित करने की कोशिश की है: डॉक यहाँ के लिए निम्न

<template name="myTemplate"> 
    {{#testHelper "value1" "value2"}} 
    {{/testHelper}} 
</template> 

मेरे कंसोल उत्पादन को देखते हुए, मैं करने की उम्मीद आउटपुट की 2 लाइनें देखें:

value1 
value2 

हालांकि मेरा कंसोल इस तरह दिखता है:

value1 
function (data) { 
    // don't create spurious annotations when data is same 
    // as before (or when transitioning between e.g. `window` and 
    // `undefined`) 
    if ((data || Handlebars._defaultThis) === 
     (old_data || Handlebars._defaultThis)) 
     return fn(data); 
    else 
     return Spark.setDataContext(data, fn(data)); 
    } 

नोट, मैं उल्का और हैंडलबार्स के लिए बिल्कुल नया हूं। मुझे लगता है कि मैं अंडरस्कोर का उपयोग करके ज्यादा खुश हूं, लेकिन लगभग पूरी तरह से अंडरस्कोर पर उल्का चमक के लिए प्रलेखन। क्या मैं अपने सहायक समारोह को परिभाषित करने में कुछ गलत कर रहा हूं? ऐसा लगता है कि यह दूसरा पैरामीटर "बार" नहीं देख रहा है, और इसके बजाय विकल्प के रूप में व्याख्या कर रहा है। (नोट: यदि मैं console.log (विकल्प) करता हूं तो यह 'अपरिभाषित' लौटाता है)।

उल्का संस्करण 0.4.0 (8f4045c1b9)

उत्तर

53

आपका तर्क अच्छा है, बस टेम्पलेट

<template name="myTemplate"> 
    {{testHelper "value1" "value2"}} 
</template> 

मन में नंगे कि testHelper समारोह केवल myTemplate टेम्पलेट में परिभाषित किया गया है करने के लिए कुछ परिवर्तन करें।

आप testHelper रजिस्टर करने के लिए चाहते हैं, तो विश्व स्तर पर आप इसके बजाय के रूप में एक मूल्य के पास करने का यह

Handlebars.registerHelper('testHelper', function(foo, bar){ 
    console.log(foo); 
    console.log(bar); 
}); 

है मज़ा

+2

यदि आपको {{#if}} सामग्री {{/ if}} शैली सहायक की आवश्यकता है तो यह मान्य नहीं है। – Donflopez

+8

कोई ऐसे परिदृश्य में सहायकों को जोड़ सकता है: '{{#if testHelper" v1 "" v2 "}} कुछ टेम्पलेट {{/ if}}' – Matanya

+0

'हैंडलबार्स.registerHelper' कहां रखा जाना चाहिए? –

1

अलावा

को

<template name="myTemplate"> {{testHelper "value1" "value2"}} </template>

की तरह कुछ करने की आवश्यकता होगी एक पैरामीटर फ़ंक्शन को पैरामीटर के रूप में पास करता है यहां

के लिए कोड है
<template name="myTemplate"> 
    {{ testHelper1 (testHelper2 "value2") }} 
</template> 

चीयर्स !!!!!