Dust 遍历数组

Dust iterate over array

我正在使用 Kraken.js、dust、mongoose。我有以下对象,我使用 mongoose 从 MongoDB 获得。

artist = {
    "_id" : ObjectId("xxxxxxxx"),
    "first_name" : "myName",
    "last_name" : "myLastname",
    "description" : "Sample Description here",
    "thumbnail" : "thumbnail.jpg",
    "works" : [ 
        "art1.jpg", 
        "art2.jpg"
    ]
}

我发送到模板的整个模型的名称是艺术家(单数)。

我想为 works 的每个成员生成 image 标签。

<img src="art1.jpg" />
<img src="art2.jpg" />

我尝试了以下代码片段,但没有用

{#.}
    <img src="./../../images/artists/{.works}" alt="" />
{/.}

{#artist.works}
    <img src="./../../images/artists/{.works}" alt="" />
{/.artist.works}

并打印“”

衷心感谢您的帮助

TL/DR:

  1. 如果传递的上下文是 artist 对象,那么您只需要迭代 works 对象。
  2. 如果传递的上下文是一个包含 artist 对象的对象,那么您需要使用 artist.works.
  3. 进行迭代

这是您示例的工作版本。

var data = {
  "artist": {
    "first_name": "myName",
    "last_name": "myLastname",
    "description": "Sample Description here",
    "thumbnail": "thumbnail.jpg",
    "works": [
      "art1.jpg",
      "art2.jpg"
    ]
  }
};

var compiled = dust.compile('<ul>{#artist.works}<li><a href="{.}" >{.}</a></li>{/artist.works}</ul>', 'hello');
// Register the template with Dust
dust.loadSource(compiled);
// Render the template
dust.render('hello', data, function(err, out) {
  // `out` contains the rendered output.
  document.getElementById('output').innerHTML = out;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/dustjs-linkedin/2.7.5/dust-full.js"></script>

<div id="output" />