【发布时间】:2011-09-30 18:53:31
【问题描述】:
Jquery-tmpl 似乎多次调用您附加到 item 的函数。
JSfiddle:http://jsfiddle.net/abQwc/2/
对于模板呈现的每个项目,console.log 的 show rowCount 被调用 4 次。
模板:
<h1 class="${$item.rowCount() % 2 == 0 ? "even" : "odd"}">${Name} - ${Payload}</h1
数据:
data = [
{ Name: "1", Payload: "Data1" },
{ Name: "2", Payload: "Data2" },
{ Name: "3", Payload: "Data3" }
]
脚本:
$(function() {$( "#template" )
.tmpl(data, {
rowCount: function(){
var rowCount = 0;
return function(){
console.log(this.data.Payload);
return ++rowCount;
}
}()
})
.appendTo( "body" )})
为什么?我已经想出了如何绕过它,但它散发着巫术的味道。
【问题讨论】:
-
return (++rowCount)%2 ? 'even':'odd';是你的巫术吗? -
不,模板中的
${($item.rowCount() / 4) % 2 ? 'even' : 'odd'}是恶魔 -
这可能值得一试:jsfiddle.net/abQwc/3
-
确实有效。为什么会简单地 ++rowCount 导致它被调用 4 次呢?另外,您引用了 rowCount 函数但没有执行它(
item.rowCount()vsitem.rowCount),该函数是如何执行的?
标签: javascript jquery closures jquery-templates