Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
25
rated 0 times [  30] [ 5]  / answers: 1 / hits: 28310  / 12 Years ago, mon, june 11, 2012, 12:00:00

In knockout.js 2.1.0, in a template using the foreach binding, you can access the current item's index though the $index() function. In a nested foreach binding, is there any way to access the index of the $parent from a template?



Say I have a data structure like this:



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
},
...
]};


With this, I want to print the path to each model, using indices:
[topModel-index subModel-index], so that the output will be something like:



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


I have bound the models using foreach, but I can't figure out how to access the topModel's index in the context of the subModel. The following example shows an approach I have tried, but it doesn't work, as I can't figure out how to access the index of the $parent referrer.



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


Should print out: 0 1, 0 2, 1 0, 1 1, 1 2, 2 0, 2 1, ...


More From » knockout.js

 Answers
51

to access the index of the parent object use



$parentContext.$index()


rather than



$parent.index()

[#84994] Saturday, June 9, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
trayvon

Total Points: 35
Total Questions: 117
Total Answers: 88

Location: Guernsey
Member since Tue, Jul 6, 2021
3 Years ago
;