我理解不正确。我现在找到了我的解决方案。
_
当在对象中找不到函数时会发生上述问题。并且 viewHelpers 根本不打算绑定到_
对象。它们应该只是提供给模板的数据的一部分。
我的代码应该是这样的:
var tpl = '<h1>Hello <%- _.find(["a", "b"], valExists) %></h1>';
var datalist = {
data: data,
valExists: function (variable) {
var exists = ((typeof variable == "string") && (variable != ""));
console.log('variable exists: ', exists, ' value: ', variable);
return exists;
},
printExists: function (variables) {
return _.find(variables, valExists);
}
}
console.log(_.template(tpl, datalist));
这些 viewHelper 实际上与 datalist 中的其他变量位于相同的命名空间中。
为了让它看起来更好,我可以将 viewHelper 的定义与数据列表分开:
var tpl = '<h1>Hello <%- _.find(["a", "b"], valExists) %></h1>';
var viewHelpers = {
valExists: function (variable) {
var exists = ((typeof variable == "string") && (variable != ""));
console.log('variable exists: ', exists, ' value: ', variable);
return exists;
},
printExists: function (variables) {
return _.find(variables, valExists);
}
}
var datalist = {
data: data,
}
// add the viewHelpers definition to datalist
_.extend(datalist, viewHelpers);
//
console.log(_.template(tpl, datalist));
它们实际上是相同的。
当提供给模板的数据中不存在我的 viewHelpers 时,就会出现我的错误。