Backbone中的模型属性名称

时间:2013-05-29 15:17:15

标签: backbone.js

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

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

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

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

我没有问题来渲染其他属性,但是这样,它只能识别名称'user'的第一部分,并且它会产生错误。有没有办法在渲染或转义符号' - '时更改名称,以便模板识别它?

谢谢!

2 个答案:

答案 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": "..." } } );