Вложенная проблема "{{for}}"? [JsRender]

Я пытаюсь собрать шаблон с jsRender вместо своей собственной версии, на которой я работал, но я получаю следующее сообщение: "Uncaught JsRender Error: Syntax error Несоответствующий или отсутствующий тег: "{{/for}}"в шаблоне: "сопровождается всем моим шаблоном.

Вот усеченная версия моего кода, есть идеи относительно того, что происходит? Или это просто вложенные циклы?

<div class="page" id="{{:info.id+info.name}}">
    {{for sources}}
    <header class="feed-title">
        <div class="feed-title-content">
            <span class="feed-title-text">{{:title}}</span>
        </div>
    </header>
    <section class="row">
        <div class="scroll-left"></div>
        <div class="row-scroll">
            {{for articles}}

                          // An if, else and some standard content insertion stuff is/was here

            {{/for}}
        </div>
        <div class="scroll-right"></div>
    </section>
    {{/for}}
</div>

Снимок экрана с инструментами разработчика Chrome, показывающими мою структуру массива:

Снимок экрана 1 расширенного представления:

Снимок экрана 1 расширенного вида

И рухнуло

И рухнул

Есть идеи о том, что происходит?

РЕДАКТИРОВАТЬ: забыл упомянуть, я загружаю это из внешнего файла, используя код Джона Папа

РЕДАКТИРОВАТЬ: Демо и код:

Вывод инструментов Chrome для моего массива:

Object
    info: Object
    sources: Array[1]
        0: Object
            articles: Array[7]
                0: Object
                1: Object
                2: Object
                3: Object
                4: Object
                5: Object
                6: Object
            link: "http://lifehacker.com"
            title: "Lifehacker"

Демо: http://jsfiddle.net/SO_AMK/3J7AE/

И рабочего вложенного массива:

Object
    foo: "names"
    testData: Array[2]
        0: Object
            markup: "<span style='background: yellow'>John</span>"
            name: "John"
            secondary: Array[1]
                0: Object
                1: Object

Демо: http://jsfiddle.net/SO_AMK/Vf8Bq/

2 ответа

Решение

Глядя на jsfiddles, проблема заключалась в том, что теги в разделе, фактически не показанные в приведенном выше коде с использованием {{if}} и ​​{{else}}, не использовали правильный синтаксис:

Они использовали:

{{for articles}}
    {{if img === false }}
        ...
    {{/if}}
    {{else}}
        ...
    {{/else}}
{{/for}}

вместо

{{for articles}}
    {{if img === false }}
        ...
    {{else}}
         ...
    {{/if}}
{{/for}}

Смотрите этот демонстрационный образец тегов {{if}} и ​​{{each}}.

Вы правы, проблемы, кажется, ваш объект JavaScript. Я думаю, что свойства для зацикливания должны быть массивами, а не объектами. Ваш шаблон прекрасно работает с тестовыми данными из примера jsfiddle, который вы дали в комментариях.

Если это не так: можете ли вы добавить сериализацию JSON вашего объекта? Ваш шаблон, кажется, работает: http://jsfiddle.net/6wcX8/1/

Другие вопросы по тегам