2012-06-27 9 views
9

मैं एक हैंडलबार टेम्पलेट बनाना चाहता हूं और केवल एक ही टेम्पलेट के लिए स्थानीय सहायक का उपयोग करना चाहता हूं। मुझे पता है कि हैंडलबर्स.registerHelper का उपयोग सभी टेम्पलेट्स के लिए हेल्पर्स को पंजीकृत करने के लिए कैसे करें, लेकिन मुझे केवल स्थानीय टेम्पलेट के लिए इसकी आवश्यकता है। इस handlebars.js प्रलेखन पर आधारित की तरह (क्या ExtJS XTemplates साथ समर्थन करता है, करने के लिए कुछ इसी तरह)क्या एक हैंडलबार टेम्पलेट के लिए एक सहायक पंजीकृत करना संभव है?

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

var context = { posts: [{url: "/hello-world", body: "Hello World!"}] }; 
var source = "<ul>{{#posts}}<li>{{{link_to this}}}</li>{{/posts}}</ul>" 

var template = Handlebars.compile(source, { 
    link_to: function(context) { 
     return "<a href='" + context.url + "'>" + context.body + "</a>"; 
    } 
); 
template(context); 

यह संभव है या सभी सहायकों विश्व स्तर पर पंजीकृत होने के लिए क्या है?

उत्तर

11

उपयोग इस वाक्य:

template(context, {helpers: helpers}) 

स्थानीय सहायकों वैश्विक को फिर से परिभाषित।

helpers = $.extend({}, Handlebars.helpers, helpers); 
template(context, {helpers: helpers}) 
+1

धन्यवाद: तो अगर आप each, if या अन्य पंजीकृत वैश्विक सहायकों चाहते हैं तो बस वस्तु का विस्तार! एफवाईआई, 'हैंडलबार्स.हेल्पर' का विस्तार करना जरूरी नहीं है। देखें [यह jsfiddle] (http://jsfiddle.net/4cdN7/)। – edan

+0

उस समय यह था :) –

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

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