我正在阅读应用程序的源代码,我看到了这行代码:
$('#div1').html(_.template($('#div2').html())({Id: app.Id(id)}));
$('#div1').html()我能看懂,但是为什么这行代码可以通过两个()代码块呢?它看起来不正确。.html() 可以占用两个 () 块吗?
.html(_.template()())
;
我正在阅读应用程序的源代码,我看到了这行代码:
$('#div1').html(_.template($('#div2').html())({Id: app.Id(id)}));
$('#div1').html()我能看懂,但是为什么这行代码可以通过两个()代码块呢?它看起来不正确。.html() 可以占用两个 () 块吗?
.html(_.template()())
;
这是因为_.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
这称为插值,正确的使用方法是
var template = _.template("Hello {{ name }}!");
template({name : "Mustache"});
=> "Hello Mustache!"
如同
var template = _.template("Hello {{ name }}!")({name : "Mustache"});
=> "Hello Mustache!"