Эквивалент следующей родственной оси DustJS xpath

Как использовать параметры в DustJS? Я сделал jsfiddle, где я хочу напечатать пары значений ключа, где ключ = [параметр].

В скрипке я просто хочу отобразить вес Ларри, Мо и Керли (а не их рост).

В XSLT это легко. Просто используйте Xpath, чтобы найти prop[@name="weight"], а затем следующую ось.

Скрипт: http://jsfiddle.net/6YrCg/

<script id="entry-template">
{title}

<ul>
    {#names}
    <li>{name}</li>{~n}
    <ul><li>Weight:{#props.name}{value}{/props.name}</li></ul>
    {/names}
</ul>
</script>

<div id="output"></div>




$(document).ready(function () {
    var data = {
        "title": "Famous People", 
        "names" : [{ "name": "Larry", "props":[{"name":"height","value":"5.8"},{"name":"weight","value":"160"}] },{ "name": "Curly", "props":[{"name":"height","value":"5.9"},{"name":"weight","value":"200"}]},{ "name": "Moe", "props":[{"name":"height","value":"5.8"},{"name":"weight","value":"160"}]}]
    }

    var source   = $("#entry-template").html();
    var compiled = dust.compile(source, "intro");
    dust.loadSource(compiled);

    dust.render("intro", data, function(err, out) {
        $("#output").html(out);
    });
});

person Tom McDonald    schedule 12.11.2014    source источник


Ответы (1)


Вот одно из решений, использующее помощник {@eq} для вывода значения только в том случае, если ключ name равен «весу».

{title}

<ul>
    {#names}
    <li>
      {name}
      <ul><li>Weight: {#props}{@eq key=name value="weight"}{value}{/eq}{/props}</li></ul>
    </li>
    {/names}
</ul>

Помощники контекста, такие как {@eq}, — это функции, которые дополняют основной синтаксис Dust. Для получения дополнительной информации об этом помощнике и других официально поддерживаемых помощниках посетите вики-страницу dustjs-helpers. .

person Interrobang    schedule 12.11.2014
comment
Можете ли вы порекомендовать IDE? Эти шаблоны JavaScript становятся слишком большими для разработки. - person Tom McDonald; 14.11.2014