0

我有一个模型,其属性名称如@id,@type等。

如果我尝试<%= @id %>Marionette.ItemView模板中使用(带下划线),我会得到

Uncaught SyntaxError: Unexpected token ILLEGAL

使用语法['@id']不会产生预期的结果。

我必须覆盖该serializeData功能吗?

谢谢

4

1 回答 1

3

下划线模板需要内部的 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 需要更多的工作。

于 2012-10-27T02:49:47.893 回答