2013-11-10 50 views
-1

當我試圖傳遞給我的模板時,數據被忽略,當它到達下劃線的template renderer時。Backbone Marionette:在視圖中未定義的參數(數據已定義)

的數據是可用的:

underscore.js in dev console just before fail

然而,我在控制檯中的異常帕拉姆url是不確定的:

Uncaught ReferenceError: url is not defined

如果我鑽深一點,我去一些怪模怪樣的javascript:

UnderscoreJS's Renderer on template

之後立即失敗:__p+='\n\t\t<a href="#'+(通知urllabel仍然定義)。

+1

「看起來很瘋狂的javascript」是你的模板的編譯版本。如果你的模板說'<%= url %>',那麼你必須傳遞一個'url'值,否則你會得到一個ReferenceError。也許jsfiddle.net或jsbin.com上的一個功能性示例會很有幫助。 –

+1

正常情況下,編譯模板中會有一個'with(obj || {})'。我在你的程序中沒有看到一個,所以['variable'選項](http://underscorejs.org/#template)在某處使用(http://jsfiddle.net/ambiguous/jrEub/)我不得不說'<%= E.url %>'或類似的東西在模板中。 –

+0

@ muistooshort,你完全正確! 'E.url'。多麼痛苦!感謝您的支持。 – jacob

回答

1

正常情況下,編譯模板中會有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 %>

+0

就是這樣,謝謝! – jacob