नीचे दिए गए कोड में, मैंने हैंडलबार के लिए एक कस्टम ब्रेक हेल्पर को परिभाषित किया है। कस्टम ब्रेक फ़ंक्शन को लूप के लिए सरणी ऑब्जेक्ट्स पर पुनरावृति करने के लिए उपयोग करके विकसित किया गया है। लेकिन, ब्रेक हेल्पर प्रकृति में सामान्य नहीं है और एक विशेष सरणी के लिए विशिष्ट है। जेनेरिक कस्टम ब्रेक हेल्पर को कैसे परिभाषित करें?

<!-- required handlebars: -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.1/handlebars.min.js"></script>


<!-- handlebars template: -->
  <script id="handlebars-demo" type="text/x-handlebars-template">
  {{#break students}}
     {{name}} has passed in {{passingYear}}.<br>
  {{/break}}      
  </script>

<div id="placeholder"></div>

<script>
//context object:
var context = {
  "students": [
    {
      "name": "student1",
      "passingYear": 2016
    },    
    {
      "name": "student2",
      "passingYear": 2018 
    },
     { 
      "name": "student3",
      "passingYear": 2013
    },
     {
      "name": "student4",
      "passingYear": 2019
    }

  ]
} 
//defining customized "break" helper in handlebars:

Handlebars.registerHelper("break", function(data,options) {
  var len = data.length;
  var returnData = "";

//custom break function:

  for (var i = 0; i < len; i++) {
      if(data[i].passingYear>2015){
        document.write(returnData + options.fn(data[i]));
} else {

        document.write(returnData + options.fn(data[i]));
        i=len+1;
      }
  }
});
//set variable template to handlebars-demo id in test.html:
var template = $('#handlebars-demo').html();
// Handlebars compiles the above template variable into a templateScript:
var templateScript = Handlebars.compile(template);
// context object is passed to above templateScript:
var html = templateScript(context);
//setting html to output:
$("#placeholder").append(html);
</script>
1
user11315212 5 अप्रैल 2019, 14:37

1 उत्तर

सबसे बढ़िया उत्तर
var context = {
  "students": [{
      "name": "mrinal",
      "passingYear": 2013
    },
    {
      "name": "raman",
      "passingYear": 2016
    },
    {
      "name": "John",
      "passingYear": 2018
    }
  ]
}

var context2 = ["mrinal","raman","John"];

Handlebars.registerHelper("break", function(array, field, operator, breakvalue, options) {
  var arrayLength = array.length;
  var returnData="";
  var fieldValue = '';
  for (var i = 0; i < arrayLength; i++) {
      if (field === '.') {
        fieldValue=array[i];
      } else {
        fieldValue=array[i][field];
      }
      if ((operator == "eq" && fieldValue == breakvalue) ||
	        (operator == "ne" && fieldValue != breakvalue) ||
          (operator == "gt" && fieldValue > breakvalue) ||
          (operator == "le" && fieldValue <= breakvalue) ||
          (operator == "ge" && fieldValue >= breakvalue) ||
          (operator == "lt" && fieldValue < breakvalue)) {
        returnData = returnData + options.fn(array[i]);
      } else {
        return  returnData;
      }
  }
  return  returnData;
});

var template = $('#handlebars-demo').html();
var templateScript = Handlebars.compile(template);
var html = templateScript(context2);
$("#placeholder").append(html);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/3.0.1/handlebars.min.js"></script>

<script id="handlebars-demo" type="text/x-handlebars-template">
  {{#break this '.' 'ne' 'raman'}}{{this}} has passed.<br>{{/break}}
</script>

<div id="placeholder"></div>
0
Christophe 9 अप्रैल 2019, 07:43