这段代码是如何工作的.html(_。template()({}))

时间:2013-08-22 03:33:42

标签: javascript jquery underscore.js

我正在阅读应用程序的源代码,我看到了这行代码:

 $('#div1').html(_.template($('#div2').html())({Id: app.Id(id)}));

我可以理解$('#div1')。html(),但为什么这行代码可以传递两个()代码块?看起来不对劲。 .html()可以带两个()块吗?

.html(_.template()());

2 个答案:

答案 0 :(得分:3)

这是因为_.template()返回一个函数然后我们用第二组()

调用返回的函数
var fn = _.template(sometemplate);//it gives a parsed template which is a function
fn(data);//it merges the data and the template to generate the html

答案 1 :(得分:0)

这称为插值,使用它的正确方法就像

var template = _.template("Hello {{ name }}!");
template({name : "Mustache"});
=> "Hello Mustache!"

相同
var template = _.template("Hello {{ name }}!")({name : "Mustache"});
=> "Hello Mustache!"

http://underscorejs.org/#template