2011-09-09 6 views
0

私はちょうどjQuery templatesを使い始めました。jQueryテンプレートのカスタム関数で現在の要素にアクセスできますか?

私は、ドキュメントがまだ私のために答えることができなかったという質問があります。私のテンプレートがある

...

<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') 

jsFiddle

私のallRestaurantsの配列には、数字を含むratingプロパティを持つオブジェクトがあります。

ratingプロパティの数字のアスタリスクのリストを返したいとします。たとえば、ratingプロパティが4の場合、****を出力したいとします。

私は何かのような...

allRestaurants = allRestaurants.filter(function(element) { 
    element.asterixes = new Array((element.rating || 0) + 1).join('*'); 
    return true; 
}); 

jsFiddleを行うことができます知っています。

...しかし、私はむしろテンプレートのためだけに余分なプロパティで配列をポーリングしません。

したがって、上記のようなカスタムテンプレート関数内では、現在の配列要素にアクセスする方法があります(私はconsole.log(this, arguments)を実行して何も役に立ちませんでした)。

もしそうでなければ、これを達成する最もクリーンな方法は何ですか?

答えて

1

基本的にすべての商品のデータはthis.dataにありますので、評価額はthis.data.ratingになります。

element.asterixes = new Array((this.data.rating || 0) + 1).join('*'); 
+0

これはちょっと恥ずかしいことです。私はそれを逃した方法を知らない。ありがとう:) – alex

関連する問題