Цикл на Dust JS для перебора массива - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу перебрать массив file_url и file_name, этот способ работает:

                     <div class="u-cf">
                        <a href="{Api.file_url[0]}">{Api.file_name[0]}</a> <br>
                        <a href="{Api.file_url[1]}">{Api.file_name[1]}</a> 
                 </div> 

Но мне нужен этот, чтобы сделать это с циклом

      {#Api.file_name}
       {#.}

        <a href="{$file_url}">{$file_name}</a>{.} <br>

      {/.}
      {/Api.file_name}

Мне нужно это сделатькак это, но он показывает только имя_файла, потому что он ссылается на Api.file_name, если я делаю Api.file_url, он показывает только URL.Я хочу показать их обоих

1 Ответ

0 голосов
/ 17 января 2019

Надеюсь, ваши данные выглядят так:

{
   names: ["file_name0", "file_name1"],
   url: ["http://www.dustjs.com/", "http://www.google.com/"]
}

вам нужен помощник для загрузки двух разных данных на один и тот же элемент, как показано ниже:

var base = '{#names}\
<a href={#loadSecondArray i=$idx}{ele}{/loadSecondArray}> {.} </a><br/>\{~n}\
{/names}'

var baseCompiled = dust.compile(base, 'base');
dust.loadSource(baseCompiled);
var jsonData = {
    names: ["file_name0", "file_name1"],
    url: ["http://www.dustjs.com/", "http://www.google.com/"],
    loadSecondArray: function (c,ctx,b,p) {
        var array2 = ctx.get('url');
        var ele = array2[p.i]
        var ctx_new = dust.makeBase({
            ele:ele
        })
c.render(b.block, ctx_new)
    }
}
var result = '';
dust.render('base', jsonData, function (err, out) {
    result = out;
});

document.querySelector("#container").innerHTML = result;

рабочая скрипка

...