2012-11-29 109 views
0

我的模型具有帶特殊字符(從Web服務接收)的屬性,需要使用括號表示法進行引用。有什麼方法可以在使用this.model.toJSON()呈現模板時引用這些屬性?我現在正在重寫toJSON來映射它們。用下劃線模板中的特殊字符訪問屬性?

更新,另一種可能是最好/最簡單的方式:$(this.el).html(this.template({ data: this.model.toJSON() }));和引用data['@invalid-property-#characters']屬性。

更新,例如模板:

<span><%= section_name %></span> 
<span><%= @type %></span <!-- won't work --> 
<span><%= data['@type'] %></span> <!-- works --> 
+0

我不完全相信你問,但你可以* HTML逃脫*值[下劃線](http://documentcloud.github.com/underscore/#template)使用下面的語法'<%- … %>',如果你問如何改變語法風格,那麼你可以通過傳入一個正則表達式來改變'_.templateSettings'。 – Jack

+0

我只是談論在我的模板中打印屬性。查看我的編輯 – ryan

+0

可能的重複[在Marionette /下劃線模板中使用具有怪異字符的屬性](http://stackoverflow.com/questions/13096106/use-attributes-with-weird-chars-in-marionette-underscore-template) –

回答

0
  1. 在模型中重寫toJSON,並用不同的特殊字符映射屬性。
  2. 範圍變量爲了使用括號語法。 this.template({ scopedVariable: this.model.toJSON() })和模板<%= scopedVariable['@invalid-variable-#name'] %>
-1
@type 

不是有效的JavaScript變量的名稱,以便它是行不通的。

編輯:

有沒有其他的解決方案比任何改變你的屬性名稱,或傳遞對象就像你在你的問題做了作用域的變量模型。這只是javascript,如果它不能在JavaScript中工作,它不會在你的下劃線模板期間工作。

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – khr055

+0

@Mike:它確實回答了這個問題:你不能這麼做是答案。如果你有答案,爲什麼不寫下來而不是批評我的? – mpm

+0

我的例子中沒有任何地方有'@ data'。我知道它是一個非法角色。我正在尋找一個可能比我給出的2更好的解決方案。 – ryan