Рендеринг одного усика несколько раз с разными данными

У меня есть два объекта, которые я хочу визуализировать рядом. Никогда не бывает, чтобы я рендерил больше или меньше двух. Моя модель настроена так:

{
  obj1: {...},
  obj2: {...}
}

Используя шаблоны усов, я хочу визуализировать каждый объект, используя один и тот же фрагмент:

<div>
  <h1>Object 1</h1>
  {{>objPartial}}
</div>
<div>
  <h1>Object 2</h1>
  {{>objPartial}}
</div>

Тем не менее, усы, кажется, не поддерживают передачу контекста в частичное. Делать что-то вроде{{>objPartial obj1}} Кажется, что это должно быть поддержано, но я не могу найти документацию по настройке контекста для частичного.

Поддерживаются ли такие вещи? Если нет, то как я могу добиться того же эффекта, не дублируя частичное (objPartial1 а такжеobjPartial2)?

Ответы на вопрос(2)

Вы можете настроить вашу модель, чтобы включитьh1 а такжеdiv чтобы вы могли перебирать список, отправляя разные данныеobjPartial каждый раз

<script type="template/text" id="partial">
    <ul>
        {{#name}}
        <li>{{.}}</li>
        {{/name}}
    </ul>
</script>

<script type="template/text" id="main">
    {{#section}}
    <div>
        <h1>{{title}}</h1>
        {{>objPartial}}
    </div>
    {{/section}}
</script>

<script type="text/javascript">
var partial = $('#partial').html(),
    main = $('#main').html(),
    data = {
        section: [
            {
            title: "Object 1",
            name: ["Curly", "Moe", "Larry"]},
        {
            title: "Object 2",
            name: ["Athos", "Porthos", "Aramis", "D'Artagnan"]}
        ]
    },
    html = Mustache.to_html(main,data, {
        "objPartial": partial
    });
document.write(html);
</script>

Смотрите это на jsFiddle

Решение Вопроса

Синтаксис, я думаю, вы ищете не{{>objPartial obj1}}, а скорее так и должно быть

{{#obj1}}
{{>objPartial}}
{{/obj1}}

Синтаксис для{{#}} не только для массивов - для объектов, не являющихся массивами, объект становится частью текущей области видимости.

Я разветвлял пример maxbeatty и изменил его, чтобы показать этот синтаксис:

<script type="template/text" id="partial">
    <ul>
        {{#name}}
        <li>{{.}}</li>
        {{/name}}
    </ul>
</script>

<script type="template/text" id="main">
    <div>
        <h1>Stooges</h1>
        {{#object1}}
        {{>objPartial}}
        {{/object1}}
    </div>
    <div>
        <h1>Musketeers</h1>
        {{#object2}}
        {{>objPartial}}
        {{/object2}}
    </div>
</script>​

<script type="text/javascript">    
    var partial = $('#partial').html(),
        main = $('#main').html(),
        data = {

            object1: {
                name: ["Curly", "Moe", "Larry"]},
            object2: {
                name: ["Athos", "Porthos", "Aramis", "D'Artagnan"]}

        },
        html = Mustache.to_html(main,data, {
            "objPartial": partial
        });
    document.write(html);
</script>

Ссылка на jsfiddle:http://jsfiddle.net/YW5zF/3/

 mikefrey02 сент. 2012 г., 00:31
Хотя с тех пор я перешел от этого вопроса, этот ответ действительно правильный. Спасибо, Даг Фиш!

Ваш ответ на вопрос