循环资产和条目

时间:2017-04-01 19:47:35

标签: javascript jquery json api contentful

我已设法从特定的ContentType中循环出所有内容,但一切运作良好,但条目后面没有其特定资产。

在这种特定情况下,它呈现为: 第1条 第2条 第3条 资产1 资产2 资产3

我希望它呈现为:条目1资产1,条目2资产2等......

将资产数组循环放在字段循环中没有帮助:)

的Javascript

client.getEntries({
    include: 1,
    'content_type': 'posts'
})
.then((response) => {

    var template = $('#myEntries').html();
    var html = Mustache.to_html(template, response.toPlainObject());
    $('.result').html(html);

})
.catch((error) => {
    console.log('Error occured')
    console.log(error)
})

HTML

<script id="myEntries" type="text/template">
    {{#items}}
        <h1>{{fields.header}}</h1>
        <p>{{fields.description}}</p>
    {{/items}}

    {{#includes.Asset}}
        <p>File: <img src="https:{{fields.file.url}}?fit=thumb&f=top_left&h=200&w=200" width="100"/></p>
    {{/includes.Asset}}
</script>

<div class="result"></div>

JSON https://jsfiddle.net/pcgn73zf/

非常乐意帮助你!

2 个答案:

答案 0 :(得分:0)

您正在使用response.toPlainObject()奉承JSON。尝试按所需顺序阅读所需的属性。

示例:

var input = {
  entries: [
    {
      text: "Entry 1"
    },
    {
      text: "Entry 2"
    }
  ],
  assets: [
    {
      text: "Asset 1"
    },
    {
      text: "Asset 2"
    }
  ]
};

var i = 0;
while (i < Math.max(input.entries.length, input.assets.length)) {
  if (i < input.entries.length) {
    document.write(input.entries[i].text + ", ");
  }
  if (i < input.assets.length) {
    document.write(input.assets[i].text + ", ");
  }
  i++;
}

答案 1 :(得分:0)

嗨,也许你在文档中错过了它,但内容丰富的js SDK已经做了链接解析,例如,如果你有一个带有图像字段的contentType帖子,当你得到一个条目时你可以直接访问资产的字段。所以要从您刚刚请求url的链接资产中获取myEntry.fields.image.fields.file.url。无需申请表格包含。 代码中的资产部分应该是(假设资产字段称为图像)

 <p>File: <img src="https:{{fields.image.fields.file.url}}?fit=thumb&f=top_left&h=200&w=200" width="100"/></p>

请注意,链接解析仅在请求收集端点client.getEntries()时有效 有关更多信息,请查看此自述文件section