2012-11-29 76 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