Tumblr API / Dashes属性名称

时间:2013-12-02 21:46:54

标签: json backbone.js tumblr marionette

我正在使用Backbone和Marionette来显示tumblr-posts列表。我想使用JSON api中提供的缩略图,但这给我带来了一个问题。我想要获取的网址称为"photo-url-100": "http://blablablablabla"。通常在JS中我会使用parentObject['photo-url-100'],但是当我使用Backbone / Marionette迭代所有项目时,根据我的意识,没有可用的根节点(所有属性都可以直接使用,例如{ {1}}而不是<%= id %>。有人能指出我应该如何处理这个问题吗?

一些澄清:我正在使用MarionetteJS。根据Tumblr的文档,我在他的标题中添加了他们的“API”(在我的情况下为http://gentletruths.tumblr.com/api/read/json)作为脚本标记,有效地“引导”它。我将其作为集合处理,并将每个帖子作为模型处理。然后,此集合由<%= post.id %>处理,每个模型由Backbone.Marionette.CompositeView处理。因此,在我的Backbone.Marionette.ItemView模板(下方)ItemView有效(作为参考),但id没有。

photo-url-100

我已经查阅了Marionette的注释源(这里的渲染函数:http://marionettejs.com/docs/backbone.marionette.html#section-188),但我不确定如何正确读取它并推断数据是如何可用的。

1 个答案:

答案 0 :(得分:0)

渲染_.template()时,只需将parentObject包装在另一个对象中:

var compiled = _.template("<img id=\"<%= post.id %>\" src=\"<%= post['photo-url-100'] %>\">");
compiled({ 'post': parentObject });

修改

您的模板:

<script id="instagram_item_template" type="text/template">
  <a href="#" class="photos__frame">
    <span class="caption"><%= post.id %></span>
    <img src="<%= post['photo-url-100'] %>" alt="" class="photos__photo">
  </a>
</script>

渲染模板:

Backbone.Marionette.ItemView.extend({
  tagName: "li",
  template: function(data){
    return _.template($('#instagram_item_template').html(), { 'post': data })
  }
});