如何使用underscore.js输出JSON对象?

时间:2012-01-04 09:07:13

标签: templates backbone.js underscore.js

我在我的骨干示例中使用了underscore.js模板库。我的模板如下所示:

<script id="results-template" type="text/template">
    <h2><%= title %></h2>
</script>

JSON对象如下所示:

{"src":"placeholder.jpg","title":"an image placeholder","coordinates":[0,0],"tags":["untagged"],"location":"home"}

我试图通过我的模板解析这个对象,但我通过我的控制台得到的错误是:

Uncaught ReferenceError: title is not defined

我做错了什么?现场小提琴就在这里:http://jsfiddle.net/amit_e/muLjV/46/

2 个答案:

答案 0 :(得分:8)

你的问题是:

JSON.stringify(myPhoto)

这需要

myPhoto.toJSON()

原因:您的JSON.stringify()会将整个myPhoto模型作为json 字符串。现在,Backbone有这个函数输出json作为 json对象,所以你可以使用model.toJSON()

更新了jsfiddle:http://jsfiddle.net/saelfaer/muLjV/50/

答案 1 :(得分:1)

如果您只想显示标题,则不需要处理Photo模型的整个JSON。您可以只检索单个属性。

在Render下面就足够了。

render: function(event){
  var yourOutput={title:myPhoto.get('title')};
  var compiled_template = _.template( $("#results-template").html(),yourOutput);
    this.el.html(compiled_template);        
}

您当前的JSON对象如下所示。它并不复杂,您可以毫不费力地获得任何标题,src,坐标,标签,位置。

{
    "src": "placeholder.jpg",
    "title": "an image placeholder",
    "coordinates": [0,0],
    "tags": ["untagged"],
    "location": "home"
}