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, ...
()
후에는 실제로 필요하지 않습니다$index
.