2014-12-05 52 views
0

我有这个对象。通过小胡子中的整数循环,有可能吗?

{ 
    "myValue": 5 
} 

我不知道是否有可能从1 ... 5在小胡子模板中循环?就像这样:

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

打印:

12345 
+0

伊莫,这不应该是可能的。模板描述的视图表示您的数据,而您的数据不是数组,而是整数。绑定之前,一个明显的解决方案是将数据更改为{“myValue”:[1,2,3,4,5]}。 – Thaylon 2014-12-05 14:26:20

回答

3

扩大对@ Thaylon的评论,您需要通过数组,而不是一个号码进行迭代。但是,假设从5[1,2,3,4,5]改变myValue是不是一种选择,你可以添加你可以在你的模板使用一个辅助功能:

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 
    } 
}); 
+0

非常好!简单而简单。 – CosX 2014-12-07 14:40:15

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

    } 
</script>