Как получить доступ к значению parent @index в каждом цикле?
Пробовал следующее:
{{#each company}}
{{#each employee}}
{{../@index}} // how to access company index here?
{{/each}}
{{/each}}
Это приводит к ошибке:
Ожидая 'ID', получил 'DATA'
Как получить доступ к значению parent @index в каждом цикле?
Пробовал следующее:
{{#each company}}
{{#each employee}}
{{../@index}} // how to access company index here?
{{/each}}
{{/each}}
Это приводит к ошибке:
Ожидая 'ID', получил 'DATA'
В примере есть синтаксическая ошибка. Правильный синтаксис {{@../index}}
.
Мы изучаем способы поддержки пользовательских имен этих параметров в будущих версиях языка, чтобы это было легче справиться. https://github.com/wycats/handlebars.js/issues/907
Это сработало для меня:
{{#each company}}
{{setIndex @index}}
{{#each employee}}
{{../index}}
{{/each}}
{{/each}}
JS:
Handlebars.registerHelper('setIndex', function(value){
this.index = Number(value + 1); //I needed human readable index, not zero based
});
Просто убедитесь, что объект company
не имеет свойства index
.
Ответ: {{@../index}}
Из Handlebars docs (см. нижнюю часть раздела "каждый" ):
"Вложенные блоки each
могут получить доступ к переменным взаимодействия через децитированные пути. Для доступа к родительскому индексу, например, можно использовать {{@../index}}
.
ПРИМЕЧАНИЕ. Я использую v1.3, поэтому, по крайней мере, этот старый.
НАПОМИНАНИЕ: Помощники - ваш последний лучший вариант. 9/10 есть лучшее решение.
Похоже на новый синтаксис в Ember v2.2.0. Я попробовал все ответы здесь, и они не работали для меня.
То, что я нашел работало, - это именовать индекс родительского цикла и индекс дочернего цикла.
{{#each parents as |parent parentIndex|}}
{{parentIndex}}
{{#each children as |child childIndex|}}
{{parentIndex}}
{{childIndex}}
{{/each}}
{{/each}}
зарегистрировать метод Помощника:
Handlebars.registerHelper('eachWithIndex', function(cursor, options) {
var fn = options.fn, inverse = options.inverse;
var ret = "";
var idx = -1;
//console.log(cursor);
cursor.forEach(function(item){
idx++;
console.log(item.index);
item.index = idx;
ret+=fn(item);
});
return ret;
});
шаблон руля:
{{#eachWithIndex outer}}
{{#each inner}}
{{../index}} // access outer index like this. I used hanlebars V1.3.0
{{index}} // access inner index
{{/each}}
{{/eachWithIndex}}