Underscore.js模板中的函数未定义

时间:2014-12-26 12:15:53

标签: javascript underscore.js underscore.js-templating

我有一些渲染完全正常的Underscore.js模板,除了该模板内部调用的函数未定义。例如:

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

函数本身在模板外部完全正常工作,并按预期返回类名。 Underscore模板是否具有我们的范围?

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);

});

1 个答案:

答案 0 :(得分:1)

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

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

请注意,我正在从 func 对象访问 checkClass 函数,从访问 oldValue newValue val 对象。这是宣言:

_.each(pData, function (vals, name) {

    outPut += rowsTpl({
        name: name,
        val: vals,
        func: {
            checkClass: checkClass,
            anyOtherThing: thing
        }
    });

});