Как вывести объект JSON с underscore.js? - PullRequest
4 голосов
/ 04 января 2012

Я использую библиотеку шаблонов 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 ]

8 голосов
/ 04 января 2012

Ваша проблема заключается в следующем:

JSON.stringify(myPhoto)

это должно быть

myPhoto.toJSON()

причина: ваш JSON.stringify() поместит всю модель myPhoto в виде строки json . теперь Backbone имеет эту функцию для вывода json в виде json объекта , поэтому вы можете использовать model.toJSON()

обновлен jsfiddle: http://jsfiddle.net/saelfaer/muLjV/50/

1 голос
/ 04 января 2012

Если вы хотите отобразить только заголовок, необязательно обрабатывать весь JSON модели Photo. Вы можете просто получить единственное свойство.

Ниже 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": "placeholder.jpg",
    "title": "an image placeholder",
    "coordinates": [0,0],
    "tags": ["untagged"],
    "location": "home"
}
...