我有一个REST API给出的模型,其中一个名称的属性是这样的:
defaults: {
...
"user-name" : "",
...
}
然后,当我尝试通过这种方式在模板中渲染它时:
<script type="text/template" id="list">
<strong>User name: </strong> <%= user-name %>
</script>
我没有问题来渲染其他属性,但是这样,它只能识别名称'user'的第一部分,并且它会产生错误。有没有办法在渲染或转义符号' - '时更改名称,以便模板识别它?
谢谢!
答案 0 :(得分: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
// ...
答案 1 :(得分:2)
您可以将数据包装到其他对象并使用括号索引器语法。所以,而不是:
_.template("<%= user-name %>", {"user-name": "..."} );
您可以使用:
_.template("<%= model['user-name'] %>", { model: {"user-name": "..." } } );