[javascript] knockout.js에서 $ parent의 액세스 색인

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, …



답변

부모 개체의 인덱스에 액세스하려면

$parentContext.$index()

보다는

$parent.index()


답변

가장 쉽게 알아낼 수있는 방법은 크롬 용 “녹아웃 컨텍스트”를 다운로드하는 것입니다. 이것은 어떤 데이터가 어떤 요소에 바인딩되어 있는지 보여주고 특정 바인딩 된 요소에 사용 가능한 함수 / 변수를 볼 수 있도록합니다. 이러한 상황을위한 놀라운 도구입니다.


답변