Добрый деньчер.
Пытаюсь получить индекс в массиве, обрабатываемом темплейтом. Первым делом я пытался создать переменную перед темплейтом, реализуя метод index:
var i=1;<br>
$('#trackTmpl').tmpl(data, {<br>
index: function() {<br>
return i++;<br>
}<br>
});<br>
Но каждая итерация шаблонизатора включает еще и три невидимых итерации (i инкрементируется четыре раза), получается:
5, 9, 13,…
Затем я попробовал извлечь key, который есть в классе шаблонизатора (по крайней мере выводится в консоль):
$('#trackTmpl').tmpl(data, {<br>
index: function() {<br>
console.log(this);<br>
Но вот незадача:
console.log(this.key); //undefined<br>
return this.key; //undefined<br>
}<br>
});<br>
Здесь у человека та же проблема:
stackoverflow.com/a/5158869/968167
Но я не могу понять причины, если в объекте есть нечто, то оно должно возвращаться.
Кроме этого, я пытался вызвать «key» в самом шаблоне:
${$item.key}
Что так же не принесло успеха, хотя
${console.log($item)}
Показывает такой же результат, как на скриншоте выше.
У меня два вопроса: как не
черезжопно получить индекс (вопрос по jQ.tmpl) и почему this ведет себя таким странным образом (общий вопрос по JS)?