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

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

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

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.

<!--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, ...

 Jørgen11 июн. 2012 г., 13:04
На данный момент я работаю только над прототипированием, поэтому у меня не так много, как в приведенном примере. Однако я открыт для предложений, использующих другие подходы.
 Matthew Schinckel11 июн. 2012 г., 13:05
Может быть, опишитеwhat вы пытаетесь сделать, а неhow, Там может быть другой подход.
 Matthew Schinckel11 июн. 2012 г., 12:51
Вам это на самом деле не нужно() после$index там.
 Jørgen11 июн. 2012 г., 13:35
Благодарю. Я изменил свой вопрос, и надеюсь, теперь он более понятен?
 Matthew Schinckel11 июн. 2012 г., 12:57
Кроме того, если бы вы могли создать jsfiddle с тем, что у вас есть, это было бы проще. Или разместите свой источник данных и просмотрите код модели.

Ответы на вопрос(2)

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

Решение Вопроса

$parentContext.$index()

скорее, чем

$parent.index()
 Jørgen13 июн. 2012 г., 14:39
Большой! Это было место на :)
 09 нояб. 2013 г., 03:06
Нужны скобки$parentContext.$index()
 22 июл. 2013 г., 18:20
Хотя, чтобы быть слишком явным во имя безмозглости, вам все равно придется$parentContext.$index() с паренс ; ^) Еще немного о $ parentContexthereфуу.
 24 июл. 2013 г., 01:24
спасибо - определенно стоит отметить, что в контексте составного значения вам нужно будет добавить (), однако, если вы привязываете элемент к индексу $ parentContext. $ в соответствии с вопросом, который вам не нужен.
 24 нояб. 2014 г., 01:42
Просто хотел добавить, что$parentContext.$parentContext.$index() работает так, как и следовало ожидать.

Ваш ответ на вопрос