2012-10-27 69 views
0

我有喜歡@id@type屬性名稱的模型等屬性使用與木偶/下劃線模板怪異字符

如果我嘗試在Marionette.ItemView模板(帶下劃線)我得到

使用 <%= @id %>

Uncaught SyntaxError: Unexpected token ILLEGAL

使用語法['@id']不會產生預期的結果。

我必須重寫serializeData函數嗎?

感謝

回答

3

下劃線模板需要內部<%= ... %> JavaScript表達式,編譯模板使用with因此通常可以參考對象屬性,彷彿它們是變量。你的問題是@id不是一個有效的JavaScript表達式。

所以是的,提供你自己的serializeData去除@ s可能是你最好的選擇。另一種可能性是使用variable選項與_.template

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. This can significantly improve the speed at which a template is able to render.

_.template("Using 'with': <%= data.answer %>", {answer: 'no'}, {variable: 'data'}); 
=> "Using 'with': no" 

那麼你可以使用之類的東西<%= data['@id'] %>;問題是讓這種方法與Marionette一起工作可能比簡單地使用定製的serializeData方法清理@s更有效。