Handlebars.js 4.0 - Builtin Helpers

बिलियन हेल्पर्स




handlebars

बिलियन हेल्पर्स

if ब्लॉक हेल्पर

if हेल्पर किसी ब्लॉक को सशर्त रूप से प्रस्तुत करने के लिए उपयोग कर सकता है। यदि इसका तर्क false , undefined , null , "" , 0 , या [] , तो हैंडलबार ब्लॉक को प्रस्तुत नहीं करेगा।
<div class="entry">
  {{#if author}}
    <h1>{{firstName}} {{lastName}}</h1>
  {{/if}}
</div>
जब खाली ( {} ) संदर्भ के साथ प्रयोग किया जाता है, तो author undefined हो जाएगा, जिसके परिणामस्वरूप:
<div class="entry">
</div>
ब्लॉक एक्सप्रेशन का उपयोग करते समय, आप एक टेम्पलेट सेक्शन को चलाने के लिए निर्दिष्ट कर सकते हैं, यदि एक्सप्रेशन एक गलत मान देता है। {{else}} द्वारा चिह्नित अनुभाग को "और अनुभाग" कहा जाता है।
<div class="entry">
  {{#if author}}
    <h1>{{firstName}} {{lastName}}</h1>
  {{else}}
    <h1>Unknown Author</h1>
  {{/if}}
</div>

unless ब्लॉक हेल्पर नहीं

यदि आप सहायक का उलटा नहीं करते हैं, if आप इसका उपयोग कर सकते हैं। यदि अभिव्यक्ति गलत मान देती है तो इसका ब्लॉक प्रदान किया जाएगा।
<div class="entry">
  {{#unless license}}
  <h3 class="warning">WARNING: This entry does not have a license!</h3>
  {{/unless}}
</div>
यदि वर्तमान संदर्भ के तहत license तलाश करना एक मिथ्या मूल्य है, तो हैंडलबार्स चेतावनी को प्रस्तुत करेगा। अन्यथा, यह कुछ भी नहीं प्रस्तुत करना होगा।

each ब्लॉक सहायक

आप each हेल्पर में बिल्ट-इन का उपयोग कर एक सूची पर पुनरावृति कर सकते हैं। ब्लॉक के अंदर, आप इसका उपयोग उस तत्व को संदर्भित करने के लिए कर सकते हैं जो this अधिक पुनरावृत्त हो रहा है।
<ul class="people_list">
  {{#each people}}
    <li>{{this}}</li>
  {{/each}}
</ul>
जब इस संदर्भ के साथ प्रयोग किया जाता है:
{
  people: [
    "Yehuda Katz",
    "Alan Johnson",
    "Charles Jolley"
  ]
}
में परिणाम होगा:
<ul class="people_list">
  <li>Yehuda Katz</li>
  <li>Alan Johnson</li>
  <li>Charles Jolley</li>
</ul>
आप this अभिव्यक्ति का उपयोग किसी भी संदर्भ में वर्तमान संदर्भ को संदर्भित करने के लिए कर सकते हैं।
आप वैकल्पिक रूप से एक {{else}} अनुभाग प्रदान कर सकते हैं जो सूची खाली होने पर ही प्रदर्शित होगा।
{{#each paragraphs}}
  <p>{{this}}</p>
{{else}}
  <p class="empty">No content</p>
{{/each}}
जब each में आइटम के माध्यम से लूपिंग each , तो आप {{@index}} माध्यम से वर्तमान लूप इंडेक्स को वैकल्पिक रूप से संदर्भित कर सकते हैं।
{{#each array}}
  {{@index}}: {{this}}
{{/each}}
इसके अतिरिक्त वस्तु पुनरावृत्ति के लिए, {{@key}} वर्तमान कुंजी नाम:
{{#each object}}
  {{@key}}: {{this}}
{{/each}}
सरणी के ऊपर पुनरावृत्ति करते समय @last प्रथम और अंतिम चरण के माध्यम से पुनरावृति के पहले और अंतिम चरण को नोट किया जाता है। जब किसी वस्तु पर केवल @first उपलब्ध है।
नेस्टेड each ब्लॉक गहराई आधारित पथों के माध्यम से पुनरावृत्ति चर का उपयोग कर सकते हैं। मूल सूचकांक तक पहुँचने के लिए, उदाहरण के लिए, {{@../index}} का उपयोग किया जा सकता है।
each सहायक ब्लॉक पैरामीटर का भी समर्थन करता है, ब्लॉक में कहीं भी नामित संदर्भों की अनुमति देता है।
{{#each array as |value key|}}
  {{#each child as |childValue childKey|}}
    {{key}} - {{childKey}}. {{childValue}}
  {{/each}}
{{/each}}
एक key और value वैरिएबल बनाएगा जो बच्चे गहन चर संदर्भों की आवश्यकता के बिना एक्सेस कर सकते हैं। ऊपर के उदाहरण में, {{key}} {{@../key}} लेकिन कई मामलों में अधिक पठनीय है।

ब्लॉक हेल्पर के with

आम तौर पर, संकलित विधि में पारित संदर्भ के खिलाफ हैंडलबार्स टेम्प्लेट का मूल्यांकन किया जाता है।
var source   = "<p>{{lastName}}, {{firstName}}</p>";
var template = Handlebars.compile(source);
template({firstName: "Alan", lastName: "Johnson"});
का परिणाम
<p>Johnson, Alan</p>
आप ब्लॉक हेल्पर के with बिल्ट-इन का उपयोग करके टेम्पलेट के एक सेक्शन के लिए संदर्भ को स्थानांतरित कर सकते हैं।
<div class="entry">
  <h1>{{title}}</h1>

  {{#with author}}
  <h2>By {{firstName}} {{lastName}}</h2>
  {{/with}}
</div>
जब इस संदर्भ के साथ प्रयोग किया जाता है:
{
  title: "My first post!",
  author: {
    firstName: "Charles",
    lastName: "Jolley"
  }
}
में परिणाम होगा:
<div class="entry">
  <h1>My first post!</h1>

  <h2>By Charles Jolley</h2>
</div>
वर्तमान ब्लॉक में ज्ञात संदर्भों को परिभाषित करने के लिए ब्लॉक मापदंडों के साथ भी इस्तेमाल किया जा सकता है। ऊपर के उदाहरण में परिवर्तित किया जा सकता है
<div class="entry">
  <h1>{{title}}</h1>

  {{#with author as |myAuthor|}}
  <h2>By {{myAuthor.firstName}} {{myAuthor.lastName}}</h2>
  {{/with}}
</div>
जो जटिल टेम्प्लेट के लिए संभावित रूप से क्लियर कोड प्रदान करने की अनुमति देता है ../ गहन संदर्भ के लिए अनुमति देता है।
आप वैकल्पिक रूप से एक {{else}} अनुभाग प्रदान कर सकते हैं जो केवल तब ही प्रदर्शित होगा जब पारित मूल्य खाली हो।
{{#with author}}
  <p>{{name}}</p>
{{else}}
  <p class="empty">No content</p>
{{/with}}

lookup सहायक

lookup सहायक डायनेमिक पैरामीटर रिज़ॉल्यूशन के लिए हैंडलबार्स चर का उपयोग करने की अनुमति देता है। यह सरणी अनुक्रमित के लिए मानों को हल करने के लिए उपयोगी है।
{{#each bar}}
  {{lookup ../foo @index}}
{{/each}}

log ब्लॉक सहायक

टेम्प्लेट निष्पादित करते समय log हेल्पर संदर्भ स्थिति के लॉगिंग के लिए अनुमति देता है।
{{log "Look at me!"}}
Handlebars.logger.log प्रतिनिधि जो कस्टम लॉगिंग करने के लिए ओवरराइड किया जा सकता है।
इस पद्धति से किसी भी तर्क को पारित किया जा सकता है और सभी को लकड़हारे के पास भेज दिया जाएगा।
{{log "This is logged" foo "And so is this"}}
लॉग स्तर को हैश पैरामीटर का उपयोग करके सेट किया जा सकता है। समर्थित मान debug , info , warn और error । जब छोड़ा गया है, तो info डिफ़ॉल्ट मान है,
{{log "Log!" level="error"}}
लॉगिंग सशर्त स्तर के आधार पर और Handlebars.logger.level में निर्धारित मूल्य है, जो info लिए चूक है। वर्तमान स्तर पर या उससे ऊपर के सभी लॉग स्टेटमेंट आउटपुट होंगे।

blockHelperMissing हेल्पर

कथित तौर पर कहा जाता है जब एक सहायक को पर्यावरण के सहायकों हैश में सीधे हल नहीं किया जा सकता है।
{{#foo}}{{/foo}}
इस सहायक को वर्तमान संदर्भ पर foo के हल किए गए मान और "foo" लिए options.name फ़ील्ड पर कॉल करेगा। ऐसे उदाहरणों के लिए जहां कोई पंजीकृत सहायक नहीं है जिसका नाम foo
यह उन उपयोगकर्ताओं द्वारा ओवरराइड किया जा सकता है जो ब्लॉक मूल्यांकन के व्यवहार को बदलना चाहते हैं। उदाहरण के लिए
Handlebars.registerHelper('blockHelperMissing', function(context, options) {
  throw new Handlebars.Exception('Only if or each is allowed');
});
if और each सहायकों के अधिक प्रभावशाली के पक्ष में मूंछ-शैली ब्लॉक मूल्यांकन के उपयोग को रोकने के लिए इस्तेमाल किया जा सकता है।

सहायक सहायक

आंतरिक सहायक जो तब बुलाया जाता है जब एक संभावित सहायक अभिव्यक्ति पर्यावरण सहायकों या वर्तमान संदर्भ में नहीं मिली थी। ऐसे मामलों के लिए जहां दोनों चलाए जाते हैं, यह blockHelperMissing हेल्पर से पहले चलाया जाता है।
{{foo}}
{{foo bar}}
{{#foo}}{{/foo}}
क्या प्रत्येक व्यक्ति इस हेल्पर को बुलाएगा, जो किसी भी तर्क को पारित कर रहा होगा जो अन्यथा उसी नाम के सहायक को दिया जाएगा। knownHelpersOnly मोड का उपयोग करते समय इस सहायक को नहीं बुलाया जाता है।
यह अनुप्रयोगों द्वारा ओवरराइड किया जा सकता है। क्षेत्र के अस्तित्व को मजबूर करने के लिए, निम्नलिखित का उपयोग किया जा सकता है:
Handlebars.registerHelper('helperMissing', function(/* [args, ] options */) {
  var options = arguments[arguments.length - 1];
  throw new Handlebars.Exception('Unknown field: ' + options.name);
});