значение 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 ответ:
Причина, по которой
{{=$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" ...
.