下划线.js模板中未定义的函数

Function undefined inside Underscore.js template

本文关键字:未定义 函数 js 下划线      更新时间:2023-09-26

我有一些下划线.js模板,可以完全正常呈现,除了在该模板中调用的函数未定义。例如:

<span class='<% checkClass(oldValue, newValue) %>'>

函数本身在模板之外完全正常工作,并按预期返回类名。下划线模板有其范围吗?

UPD:这就是模板的定义和调用方式:

function checkClass() {... return 'Something' ...}
pData = [Object]; //Just for reference
var rowsTpl = _.template("<span class='<% checkClass(oldValue, newValue) %>'>");
_.each(pData, function (vals, name) {
    prOutput = rowsTpl(vals);
    $(this.elem).html(prOutput);
});

刚刚想出了(我认为)正确的方法。就我而言,我必须将自己的对象传递给模板,包括所需的函数或数据:

var rowsTpl = _.template("<span class='<% func.checkClass(val.oldValue, val.newValue) %>'>");

请注意,我正在从 func 对象访问 checkClass 函数,从 val 对象访问 oldValuenewValue。以下是声明:

_.each(pData, function (vals, name) {
    outPut += rowsTpl({
        name: name,
        val: vals,
        func: {
            checkClass: checkClass,
            anyOtherThing: thing
        }
    });
});