JQuery模板-调用${$item.function()},而不是在模板中指定

JQuery Template - Calls ${$item.function()} more than is specified in the template

本文关键字:调用 模板 item function JQuery      更新时间:2023-09-26

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" )})

为什么?我已经想到了如何绕过它,但它散发着巫术的味道。

我替换了:

${$item.rowCount() % 2 == 0 ? "even" : "odd"}
...
return function(){
    console.log(this.data.Payload);
    return ++counter;
}

${$item.rowCount()}
....
return function() {
    console.log(this.data.Payload);
    return (++counter) % 2 ? 'even' : 'odd';
}

,并能让它工作。然而,Options参数仍然为每个条目执行4次。我相信这样的计算在tmpl中仍然是不确定的。