значение itemnumber родительского цикла в jQuery jsrender.в JS и jQuery.Просмотры.JS


У меня есть шаблон using jQuery, использующий jsrender.в JS и jQuery.Просмотры.js by http://github.com/BorisMoore/jsviews

У меня есть 1 вложенный цикл, и внутри этого вложенного цикла я хочу получить itemNumber или какое-то другое значение. Например:

Шаблон:

{{#each ImageQuestions}}
  <div id="image-{{=$view.itemNumber}}">
  {{#each GroupImagesRepeatation}}
    <input type="radio" name="{{=$view.parent.data.QuestionID}}" value="{{=$view.itemNumber}}" />
  {{/each}}
{{/each}}

Массив:

var Questions = {
        ImageQuestions: [
                            { 
                                QuestionID: 1,
                                GroupImagesRepeatation: [1, 2, 3, 4]
                            },
                            {
                                QuestionID: 2,
                                GroupImagesRepeatation: [1, 2, 3, 4, 5, 6]
                            }
                        ]
    };

Запрос: {{=$view.parent.data.QuestionID}} это то, что я хочу работать правильно. Я требую дать уникальное имя radioList для каждого вложенного цикла.

, пожалуйста, помогите мне.

1 2

1 ответ:

Причина, по которой {{=$view.parent.data.QuestionID}} не возвращает правильное значение, заключается в том, что вам нужно пройти через два родительских уровня: {{=$view.parent.parent.data.QuestionID}}. Непосредственный родитель имеет в качестве данных массив GroupImagesRepeatation. Его родителем является элемент данных внешнего каждого цикла, который имеет свойство questionID.

Можно использовать более компактный синтаксис:

{{#each ImageQuestions}}
  <div id="image-{{=$itemNumber}}">
    {{#each GroupImagesRepeatation}}
      <input type="radio" name="{{=$parent.parent.data.QuestionID}}" value="  {{=$itemNumber}}" />
    {{/each}}
{{/each}}

Совет-для отладки в скомпилированном шаблоне: Установите $.views.allowCode = true;, а затем добавьте {{*debugger;}} в шаблон, например {{*debugger;}}<input type="radio" ....