如何开发自定义的for循环助手以遍历车把中的数组?

时间:2019-04-11 11:42:18

标签: javascript handlebars.js

我设计了一个{{break}}定制帮助器,该辅助器可用于按照if块提供的条件在定制for循环中中断迭代。请建议如何在车把中为助手创建自定义。

<!-- 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">

// NEED CUSTOM FOR HELPER HERE TO ITERATE THROUGH THE ARRAY SO THAT I CAN BREAK THE LOOP USING THE CUSTOM BREAK HELPER {{break}} ALREADY DESIGNED.


</script>
<div id="placeholder"></div>
<script>
//context object:
var context2 = ["student1","student2","student3","student4"];

//defining customized "break" helper in handlebars:
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;
});
//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(context2);
//setting html to output:
$("#placeholder").append(html);

</script>

0 个答案:

没有答案