Lier un élément de modèle à l'index du tableau dans KnockoutJS
J'ai besoin de nom de la <div>'s
dans un KnockoutJS modèle en fonction de la position qu'ils apparaissent dans la liste pour un plugin Jquery comme suit:
<div id="item1">...</div>
<div id="item2">...</div>
<div id="item3">...</div>
Est-il un moyen de se lier à l'index de l'élément dans le tableau à l'aide de KnockoutJS?
Ce serait une honte si je devais ajouter ces données pour le sélectionner sur la base de données à l'aide de ROWINDEX.
source d'informationauteur jaffa | 2011-05-18
Vous devez vous connecter pour publier un commentaire.
mise à jour: KO prend désormais en charge un
$index
variable de contexte que vous pouvez utiliser à l'intérieur d'unforeach
(outemplate
avecforeach
param). Docs: http://knockoutjs.com/documentation/binding-context.htmlSi vous êtes d'accord avec l'utilisation de jQuery Templates
{{each}}
alors quelque chose comme ceci:Si vous avez à utiliser le
foreach
option, puis quelque chose de ce genre:Edit: ces jours-ci, je préfère créer un abonnement à mon observableArray qui ne dispose que de prendre un seul passage à travers la matrice, et de créer ou définir un indice observable sur l'élément. Comme:
Exemple ici: http://jsfiddle.net/rniemeyer/CXBFN/
ou vous pouvez prendre cette idée et d'étendre observableArrays de fournir un
indexed
fonction vous permet de configurer simplement en appelantmyObservableArray.indexed()
.Voici un exemple: http://jsfiddle.net/rniemeyer/nEgqY/
C'est beaucoup plus facile avec knock-out 2.1.0 et ci-dessus:
Pas de fantaisie, les scripts nécessaires.
Un mot de prudence:
attr: { id : 'item' + $index }
ne fonctionnera PAS. Depuis$index
est une fonction elle-même, ne pas ajouter les parenthèses à cause de votre identité, la concaténation de "item" et l'ensemble de définition de la fonction de!Eu le même problème, mais avec un dependantObservable comme source pour le foreach modèle,
hélas le ko.utils.arrayIndexOf n'a pas fonctionné...
Solution: créé une fonction qui recréé le tableau renvoyé par la dependantObservable et simplement utilisé le js indexOf fonction à la Rubrique:
Et voilà, l'indice attendu dans le jQuery tpl.