JsRender — динамический массив, вспомогательная функция

У меня есть веб-сайт с JsRender и файлом JSON.
Мой код JSRender:

{{for ~getModel(cards)}}
{{:id}}
{{/for}}

Мой файл JSON:

{
    "alpha": {
        "cards": [{
            "id": "alpha-01"
        }, {
            "id": "alpha-02"
        }, {
            "id": "alpha-03"
        }]
    },
    "beta": {
        "cards": [{
            "id": "beta-01"
        }, {
            "id": "beta-02"
        }]
    }
}

В {{for ~getModel(cards)}} есть cards, суффикс. Мой помощник JsRender объединяет префикс и суффикс, и в результате получается строка. Эта строка должна быть моим массивом для цикла for. Суффикс — это динамическая часть, параметр из URL (?model=alpha)

Цикл for должен проходить через массив alpha.cards -> {{for ~getModel(alpha.cards)}}

Но когда я объединяю динамическую часть и суффикс, возвращаемое значение представляет собой строку, и цикл for не работает. Кажется, что значение (возврат) для помощника должно быть массивом.

Так ли это или есть другое решение проблемы?


person redpop    schedule 18.03.2015    source источник


Ответы (1)


Да - вам нужно вернуть массив. JsRender отображает объекты и массивы javascript (обычно это иерархия объектов и массивов). Если ваша строка представляет собой строку JSON, вам нужно сначала преобразовать/eval, чтобы создать соответствующий объект или массив...

person BorisMoore    schedule 18.03.2015
comment
Спасибо за ваш ответ. Мое решение было: $.views.helpers({ getModel: function() { return this.data[byModel]; } }); и оно работает! byModel содержит alpha в виде строки. - person redpop; 20.03.2015