圍繞一個簡單的方法是環繞它的另一個對象,這樣就可以使用[]
訪問'company.id'
。例如,您的模板看起來是這樣的:
<script id="tmpl" type="text/html">
id: <%= o.id %><br>
company: <%= o['company.id'] %>
</script>
而JavaScript是這樣的:
var html = _.template($('#tmpl').html(), {
o: {
"id": 1234,
"company.id": 4321
}
});
演示:http://jsfiddle.net/ambiguous/wtLkP/1/ 下劃線模板編譯器使用with
提供像簡單的事情上下文<%= x %>
在模板中,所以我不認爲你能做得比上面的o.
更好。下劃線從模板建立一個功能,你可以通過查看source
屬性功能的看到函數源:
var t = _.template(template_source);
console.log(t.source);
這會給你這樣的事情:
function(obj){
var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};
with(obj||{}){
__p+='\n id: '+
(o.id)+
'<br>company: '+
(o['company.id'])+
' and stuff\n';
}
return __p;
}
,你可以看到爲什麼只有<%= [x] %>
將不起作用:with
只調整當前範圍,因此無法將[x]
轉換爲有效的JavaScript。
看起來不錯thx。我讀過有關'with'的用法,但我沒有掌握它的內容,但仍然沒有。我確實看到可以通過傳遞'{variable:'data'}'或類似的東西來設置變量的名稱。我的印象是這樣做意味着我可以使用'data [「company.id」]來訪問該屬性,但是也無法實現。感謝你的回答。 –