我刚开始使用jQuery templates。
我有一个问题,文件无法回答我(还)。
我的模板是......
<script id="restaurant-review-template" type="text/x-jQuery-tmpl">
<li>
<span class="rating rating-${rating}">
${$item.getRating()}
</span>
</li>
</script>
...我的调用代码是......
$('#restaurant-review-template').tmpl(allRestaurants, {
getRating: function() {
// Is it possible to access the array element here?
// Ideally, if `this` was the current array member...
return new Array((this.rating || 0) + 1).join('*');
}
}).appendTo('#cont')
在我的allRestaurants
数组中,我的对象具有rating
属性,其中包含一个数字。
我想返回rating
属性中数字的星号列表。例如,如果rating
属性保留4
,我想输出****
。
我知道我可以做点像......
allRestaurants = allRestaurants.filter(function(element) {
element.asterixes = new Array((element.rating || 0) + 1).join('*');
return true;
});
...但我不想仅为模板使用额外属性来对数组进行规则。
因此,在如上所述的自定义模板函数中,有没有办法访问当前数组元素(我做console.log(this, arguments)
并且看不到任何有用的东西)。
如果没有,实现这一目标的最简洁方法是什么?
答案 0 :(得分:1)
基本上所有商品的数据都位于this.data
,因此您可以使用this.data.rating
达到评级值。
element.asterixes = new Array((this.data.rating || 0) + 1).join('*');