我试图在下划线模板中调用自定义函数,但是我收到错误: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;
}
在我的模板中,我调用了测试函数:
<%= testFunction(10) %>
但我收到错误testFunction未定义。
答案 0 :(得分:3)
_.extend
不能像那样工作,它需要2个或更多对象,并且键将被合并。 看起来您可能从this other question获取了该片段,但它不正确和/或过时。
延伸
require 'nokogiri' require 'open-uri' require 'time' @url = "http://www.caru.org.uy/web/servicios/llamados-a-concurso-publico-para-contratar-personal/" page = Nokogiri::HTML(open(@url)) div_content = page.css('.contenido') div_content.each do |item| puts item.text break if item.css('h3').text == "Finalizados" end
将源对象中的所有属性复制到 目标对象,并返回目标对象。任何 嵌套对象或数组将通过引用复制,而不是复制。 它是有序的,因此最后一个源将覆盖相同的属性 以前参数中的名称。
_.extend(destination, *sources)
这样可行:
_.extend({name: 'moe'}, {age: 50});
=> {name: 'moe', age: 50}
但在这个简单的情况下,更好的方法是完全避免_.extend({ output: output }, { testFunction: this.testFunction });
。
_.extend
在现实生活中,您可能希望在函数中使用视图context (this
)。为此,在将函数传递给模板时,需要对函数使用.bind(this)
。
this.$el.html(this.template({
output: output,
testFunction: this.testFunction
}));