灰尘迭代阵列

时间:2018-06-18 04:40:20

标签: javascript dust.js kraken.js

我正在使用Kraken.js,灰尘,猫鼬。我使用mongoose从MongoDB获得以下对象。

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

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

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

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

我尝试过以下代码段并且无效

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

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

并打印&#34; &#34;

真正感谢您的帮助

1 个答案:

答案 0 :(得分:1)

<强> TL / DR

  1. 如果传递的上下文是artist对象,则只需要迭代works对象。
  2. 如果传递的上下文是包含artist对象的对象,则需要使用artist.works进行迭代。
  3. 这是您的示例的工作版本。

    &#13;
    &#13;
    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;
    });
    &#13;
    <script src="https://cdnjs.cloudflare.com/ajax/libs/dustjs-linkedin/2.7.5/dust-full.js"></script>
    
    <div id="output" />
    &#13;
    &#13;
    &#13;