Dans knockout.js 2.1.0, dans un modèle utilisant la liaison foreach, vous pouvez accéder à l'index de l'élément actuel via la fonction $ index (). Dans une liaison foreach imbriquée, existe-t-il un moyen d'accéder à l'index du $ parent à partir d'un modèle?
Disons que j'ai une structure de données comme celle-ci:
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
},
...
]};
Avec cela, je veux imprimer le chemin vers chaque modèle, en utilisant les indices: [topModel-index subModel-index], de sorte que la sortie soit quelque chose comme:
[0 0]
[0 1]
[1 0]
[2 0]
[2 1]
...
J'ai lié les modèles en utilisant foreach, mais je ne peux pas comprendre comment accéder à l'index de topModel dans le contexte du sous-modèle. L'exemple suivant montre une approche que j'ai essayée, mais cela ne fonctionne pas, car je ne peux pas comprendre comment accéder à l'index du référent $ parent.
<!--ko foreach: topModel -->
<!--ko foreach: subModel -->
[<span data-bind="text: $parent.index()"></span>
<span data-bind="text: $index()"></span>]
<!--/ko-->
<!--/ko-->
Doit imprimer: 0 1, 0 2, 1 0, 1 1, 1 2, 2 0, 2 1, ...
()
après$index
là.Réponses:
pour accéder à l'index de l'objet parent utiliser
plutôt que
la source
$parentContext.$index()
avec les parents. ; ^) Un peu plus sur $ parentContext ici , fwiw.$parentContext.$index()
$parentContext.$parentContext.$index()
fonctionne comme vous vous attendez aussi.Le moyen le plus simple de le savoir est de télécharger le "contexte de knockout" pour Chrome. Cela vous montre quelles données sont liées à quel élément et vous permet également de voir les fonctions / variables disponibles pour cet élément lié particulier. C'est un outil incroyable pour des situations comme celles-ci.
la source