我有一个模型,其属性名称如@id
,@type
等。
如果我尝试<%= @id %>
在Marionette.ItemView
模板中使用(带下划线),我会得到
Uncaught SyntaxError: Unexpected token ILLEGAL
使用语法['@id']
不会产生预期的结果。
我必须覆盖该serializeData
功能吗?
谢谢
我有一个模型,其属性名称如@id
,@type
等。
如果我尝试<%= @id %>
在Marionette.ItemView
模板中使用(带下划线),我会得到
Uncaught SyntaxError: Unexpected token ILLEGAL
使用语法['@id']
不会产生预期的结果。
我必须覆盖该serializeData
功能吗?
谢谢
下划线模板需要内部的 JavaScript 表达式<%= ... %>
,编译后的模板使用with
,因此您通常可以引用对象属性,就好像它们是变量一样。您的问题是这@id
不是有效的 JavaScript 表达式。
所以是的,提供你自己的serializeData
来删除@
s 可能是你最好的选择。另一种可能性是使用该variable
选项_.template
:
默认情况下,模板
with
通过语句将数据中的值放在本地范围内。但是,您可以使用变量设置指定单个变量名称。这可以显着提高模板的渲染速度。_.template("Using 'with': <%= data.answer %>", {answer: 'no'}, {variable: 'data'}); => "Using 'with': no"
然后你可以使用类似的东西<%= data['@id'] %>
; 问题在于,让这种方法与 Marionette 一起使用可能比简单地清理@
自定义serializeData
方法中的 s 需要更多的工作。