Могу ли я получить доступ к текущему элементу в пользовательской функции шаблонов jQuery? - PullRequest
0 голосов
/ 09 сентября 2011

Я только что начал использовать шаблоны 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 Ответ

1 голос
/ 09 сентября 2011

В основном все данные элемента расположены в this.data, поэтому вы можете достичь значения рейтинга с помощью this.data.rating.

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