3

我有一个由 REST API 给出的模型,名称的属性之一是这样的:

defaults: {
...
"user-name" : "",
...
}

然后,当我尝试通过这种方式在模板中呈现它时:

<script type="text/template" id="list">
<strong>User name: </strong>    <%= user-name %>
</script>

我渲染其他属性没有问题,但是有了这个,它只识别名称“用户”的第一部分,并因此给出错误。渲染时有什么方法可以更改名称或转义符号“-”,以便模板识别它?

谢谢!

4

2 回答 2

2

您可以将数据包装到其他对象并使用括号索引器语法。所以,而不是:

_.template("<%= user-name %>", {"user-name": "..."} );

您可以使用:

_.template("<%= model['user-name'] %>", { model: {"user-name": "..." } } );
于 2013-05-29T15:29:18.057 回答
2

不是有效的-变量字符,因此您必须更改user-name为其他字符。

如果您无法更改整个模型的属性,并且您只需通过调用将模型属性传递给模板model.toJSON(),则可以在将其传递给模板之前更改该变量:

var attrs = model.toJSON();
// change user-name to something else
attrs.user_name = attrs['user-name'];
// and delete it
delete attrs['user-name'];
// pass attrs to the template like normal
// ...
于 2013-05-29T15:24:31.167 回答