在胡子中循环整数,是否可能?

时间:2014-12-05 10:43:48

标签: javascript mustache ractivejs

我有这个对象。

{
    "myValue": 5
}

我想知道是否可以在胡须模板中从1 ... 5循环?像这样:

{{#myValue}}
    {{.}}
{{/myValue}}

打印:

12345

2 个答案:

答案 0 :(得分:3)

扩展@ Thaylon的注释,你需要一个数组来迭代而不是数字。但是假设将myValue5更改为[1,2,3,4,5]不是一个选项,您可以添加一个可以在模板中使用的辅助函数:

var ractive = new Ractive({
  el: 'main',
  template: '#template',
  data: {
    myValue: 5,
    range: function ( low, high ) {
      var range = [];
      for ( i = low; i <= high; i += 1 ) {
        range.push( i );
      }
      return range;
    }
  }
});
<script src="http://cdn.ractivejs.org/latest/ractive.js"></script>

<main></main>

<script id='template' type='text/ractive'>
  {{#each range(1, myValue)}}
    <p>{{this}}</p>
  {{/each}}
</script>

作为将range()帮助器放在data对象上的替代方法,您可以通过执行以下操作将其添加为通用帮助程序:

var helpers = Ractive.defaults.data;

helpers.range = function ( low, high ) {
  var range = [];
  for ( i = low; i <= high; i += 1 ) {
    range.push( i );
  }
  return range;
};

var ractive = new Ractive({
  el: 'main',
  template: '#template',
  data: {
    myValue: 5
  }
});

答案 1 :(得分:0)

 <script type="text/javascript">
    var sampleVal = '{{foo}}';
    // or var sampleVal = '{{foo.foo}}'; 
    for (var i = 0; i < sampleVal; i++) { 

    } 
</script>