Подтвердить что ты не робот

Индекс доступа $parent в knockout.js

В knockout.js 2.1.0, в шаблоне с использованием привязки foreach, вы можете получить доступ к текущему элементу индекса, используя функцию $index(). В вложенном привязке foreach существует ли способ доступа к индексу родителя $из шаблона?

Скажем, у меня есть такая структура данных, как это:

var application = {
  topModel: [
    {
      {subModel: [{'foo':'foo'}, { 'bar':'bar'}]}, // this has top:0 and sub:0
      {subModel: [{'foo2':'foo2'}, { 'bar2':'bar2'}]} // this has top:0 and sub:1
    },
    {
      {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:1 sub:0
    },
    {
      {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:2 sub:0
      {subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:2 sub:1
    },
    ...
    ]};

При этом я хочу напечатать путь к каждой модели, используя индексы: [topModel-index subModel-index], так что выход будет выглядеть примерно так:

[0 0]
[0 1]
[1 0]
[2 0]
[2 1]
...

Я связал модели с помощью foreach, но я не могу понять, как получить доступ к индексу topModel в контексте подмодели. В следующем примере показан подход, который я пробовал, но он не работает, поскольку я не могу понять, как получить доступ к индексу $parent referrer.

<!--ko foreach: topModel -->
<!--ko foreach: subModel -->
  [<span data-bind="text: $parent.index()"></span>
  <span data-bind="text: $index()"></span>]
<!--/ko-->
<!--/ko-->

Должен распечатываться: 0 1, 0 2, 1 0, 1 1, 1 2, 2 0, 2 1,...

4b9b3361

Ответ 1

для доступа к индексу использования родительского объекта

$parentContext.$index()

а не

$parent.index()

Ответ 2

Самый простой способ узнать - скачать "контекст нокаута" для хром. Это показывает вам, какие данные привязаны к какому элементу, а также позволяет видеть доступные функции/переменные для этого связанного элемента. Это удивительный инструмент для таких ситуаций.