正常情況下,編譯模板中會有with(obj||{})
。我沒有看到一個在你這樣或許variable
option在使用中某處:
By default, template places the values from your data in the local scope via the with
statement. However, you can specify a single variable name with the variable setting.
例如,如果您:
var t = _.template('<%= x %>');
再看看t.source
,你會看到如下的功能這個(格式爲清楚起見):
,但如果你說:
var t = _.template('<%= x %>', null, { variable: 'E' });
並看看t.source
,你會看到相同的結構沒有with
塊圍繞功能的膽量。
演示:http://jsfiddle.net/ambiguous/jrEub/
模板函數的結構表明你有{variable: 'E'}
地方讓你的模板應該看<% E.url %>
和這樣的,而不是僅僅<% url %>
。
「看起來很瘋狂的javascript」是你的模板的編譯版本。如果你的模板說'<%= url %>',那麼你必須傳遞一個'url'值,否則你會得到一個ReferenceError。也許jsfiddle.net或jsbin.com上的一個功能性示例會很有幫助。 –
正常情況下,編譯模板中會有一個'with(obj || {})'。我在你的程序中沒有看到一個,所以['variable'選項](http://underscorejs.org/#template)在某處使用(http://jsfiddle.net/ambiguous/jrEub/)我不得不說'<%= E.url %>'或類似的東西在模板中。 –
@ muistooshort,你完全正確! 'E.url'。多麼痛苦!感謝您的支持。 – jacob