Ответ 1
Вы можете использовать $parent
для доступа к одному уровню уровня вверх. Итак, из вашего внутреннего цикла вы можете использовать parent
для доступа к текущему элементу, зацикливаемому в вашем graduationDateRows
У меня есть вложенный цикл foreach в knockout.js, и я хочу получить доступ к свойству из текущего объекта во внешнем цикле внутри внутреннего цикла. Как мне это сделать?
<!-- ko foreach: graduationDateRows -->
<tr>
<td class="center" data-bind="text: CalendarYear"></td>
<!-- ko foreach: $root.graduationDatesHeaders -->
<td class="center" data-bind="text: /* !here! */"></td>
<td></td>
<!-- /ko -->
</tr>
<!-- /ko -->
Вы можете использовать $parent
для доступа к одному уровню уровня вверх. Итак, из вашего внутреннего цикла вы можете использовать parent
для доступа к текущему элементу, зацикливаемому в вашем graduationDateRows
Вы можете даже прокручивать полностью несвязанные массивы с помощью $parent
и as
сглаживания в привязке foreach
.
Рассмотрим следующий пример:
var VM = function(){
this.rows = ['one','two','three'];
this.cols = [1,2,3,4,5];
}
ko.applyBindings(new VM());
<table border="1">
<tr>
<th></th>
<!-- ko foreach: cols -->
<th data-bind="text: $data"></th>
<!-- /ko -->
</tr>
<!-- ko foreach: {data: rows, as: 'row'} -->
<tr>
<th data-bind="text:row"></th>
<!-- ko foreach: {data: $parent.cols, as: 'col'} -->
<td data-bind="text:row + '/' + col"></td>
<!-- /ko -->
</tr>
<!-- /ko -->
</table>
Чтобы получить доступ к свойству во внешнем цикле из текущего объекта во внутреннем цикле, вы можете использовать $parent.property_name
.
например:.
<ul id="salesInfo" data-bind="foreach : salesInfo ">
<li class="department">
<a href="#" data-bind="text: name" />
<ul id="salesDept" data-bind="foreach: years">
<li class="years">
<a href="#" data-bind="text: year, click:function(data, event) { $root.yearClicked(year,$parent.name,data) }" />
</li>
</ul>
</li>
</ul>
Пример объекта массива salesInfo
:
{
"id" : "0",
"name" : "Human Resources",
"years" : [
{ "year" : "2012", "values" : [250000,350000,150000,220000,450000,180000] }
]
}