Усы + вложенные объекты - PullRequest
6 голосов
/ 05 января 2012

Я пытаюсь создать дерево из списка тегов, в которых есть теги.

Вот пример JSON, который я использую:

{
  "tags":
  [{"name":"My first tag",
    "tags":
    [{"name":"My first tag inside a tag"},
     {"name":"My second tag inside a tag"}]
  }]
}

Если я использую следующий шаблон усов, он отображает «Мой первый тег» без проблем:

<ul>
{{#tags}}
<li tag-id="{{id}}">
  {{name}}
</li>
{{/tags}}
</ul>

Но затем, используя следующий шаблон, я пытаюсь отобразить теги внутри этого первого тега:

<ul>
{{#tags}}
<li tag-id="{{id}}">
  {{name}}
  <div>
  {{#tags}}
    <a>{{name}}</a>
  {{/tags}}
  </div>
</li>
{{/tags}}
</ul>

Используя этот шаблон, усы ничего не рендерит.

Как отобразить вложенные списки с помощью Усов?

1 Ответ

7 голосов
/ 05 января 2012

Чтобы решить эту проблему, я сделаю:

<div id="result-tag"></div>
<script language="javascript" type="text/javascript">
  function test(){
  var view = {
    "tags":
    [{"name":"My first tag",
      "tags":
      [{"name":"My first tag inside a tag"},
       {"name":"My second tag inside a tag"}]
    }]
  };

  var templt = '<ul>{{#tags}}<li>{{name}}<div>{{>subtags}}</div></li>{{/tags}}</ul>';
  var partials = {"subtags": "{{#tags}}<a>{{name}}</a><br/>{{/tags}}"};
  var html = Mustache.to_html(templt, view, partials);
  document.getElementById('result-tag').innerHTML=html;
}
window.onload = test;
</script>

Надеюсь, это поможет

...