我尝试在下划线模板内调用自定义函数,但收到错误:未定义testFunction。
在我的脊背上看来:
initialize: function() {
this.testFunction = function (x) {
alert("Hello " + x);
}
}
render: function() {
var data = _.extend({"output":output}, this.testFunction);
$(this.el).html(this.template(data));
return this;
}
在我的模板中,我调用了test函数:
<%= testFunction(10) %>
但是我得到一个错误testFunction没有定义。
1条答案
按热度按时间nlejzf6q1#
_.extend
并不是这样工作的,它需要2个或更多的对象,并且键将被合并。* 看起来你可能是从this other question中获得了这个代码片段,但是它是不正确的和/或过时的。*扩展
_.extend(destination, *sources)
将source对象中的所有属性复制到destination对象,并传回destination对象。任何巢状对象或数组都会以传址方式复制,而不是复制。它是依序的,所以最后一个来源会覆写先前参数中相同名称的属性。
这是可行的:
但是在这个简单的例子中,更好的方法是完全避免
_.extend
。在真实的生活中,您可能希望在函数中使用视图context (
this
),为此,在将函数传递给模板时,您需要在函数中使用.bind(this)
。