2012-05-30 11 views

回答

3

圍繞一個簡單的方法是環繞它的另一個對象,這樣就可以使用[]訪問'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。

+0

看起來不錯thx。我讀過有關'with'的用法,但我沒有掌握它的內容,但仍然沒有。我確實看到可以通過傳遞'{variable:'data'}'或類似的東西來設置變量的名稱。我的印象是這樣做意味着我可以使用'data [「company.id」]來訪問該屬性,但是也無法實現。感謝你的回答。 –

相關問題