在下划线模板中访问具有特殊字符的属性?

时间:2012-11-29 13:13:18

标签: javascript templates backbone.js underscore.js

我的模型具有特殊字符的属性(从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 -->

2 个答案:

答案 0 :(得分:0)

  1. 覆盖模型中的toJSON,并使用不同的特殊字符映射属性。
  2. 范围变量以使用括号语法。 this.template({ scopedVariable: this.model.toJSON() })以及模板<%= scopedVariable['@invalid-variable-#name'] %>

答案 1 :(得分:-1)

@type

不是有效的javascript变量名,因此无法正常工作。

编辑:

除了更改属性名称之外没有其他解决方案,或者通过传递您在问题中所做的对象来在变量中确定模型范围。这不仅仅是javascript的魔力,如果它不能在javascript中运行,它将无法在您的下划线模板中运行,期间。