Bind template-Element auf den index des array in KnockoutJS
Brauche ich, um den Namen des <div>'s
in einer KnockoutJS-Vorlage entsprechend der position, die Sie in der Liste erscheinen für ein Jquery-plugin, etwa so:
<div id="item1">...</div>
<div id="item2">...</div>
<div id="item3">...</div>
Gibt es eine Möglichkeit, zu binden, um den index des Elements im array mit KnockoutJS?
Es wäre eine Schande, wenn ich hatte, um diese Daten in den select auf die Datenbank mit ROWINDEX.
InformationsquelleAutor jaffa | 2011-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
update: KO unterstützt nun eine
$index
Kontext-variable, die Sie verwenden können, innerhalb einforeach
(odertemplate
mitforeach
param). Docs: http://knockoutjs.com/documentation/binding-context.htmlWenn Sie okay sind mit den jQuery-Templates
{{each}}
, dann so etwas wie dies funktionieren wird:Wenn Sie hatten die
foreach
option, dann so etwas wie dies funktionieren würde:Edit: in diesen Tagen ich lieber ein Abonnement, um meine observableArray, hat nur einen Durchgang durch das array und erstellen/festlegen einen index beobachtbaren auf das Element. Wie:
Beispiel hier: http://jsfiddle.net/rniemeyer/CXBFN/
oder Sie können diese Idee und erweitern observableArrays, um eine
indexed
- Funktion, die es Ihnen ermöglichen, setzen Sie diesen einfach durch AufrufmyObservableArray.indexed()
.Hier ist ein Beispiel: http://jsfiddle.net/rniemeyer/nEgqY/
Das Letzte Geige mit der indizierten () - Methode ist einfach der beste Teil der Antwort, wie es ist leicht wiederverwendbar.
Das ist genial! Prost!
InformationsquelleAutor RP Niemeyer
Dies ist viel einfacher, mit Ko 2.1.0 und höher:
Keine Lust auf Skripte notwendig.
Ein Wort der Vorsicht:
attr: { id : 'item' + $index }
wird NICHT funktionieren. Da$index
ist eine Funktion, die sich nicht fügen Sie die Klammern bewirken, dass Ihre id zu sein, die Verkettung von 'Element' und die gesamte Funktion definition!InformationsquelleAutor jkschneider
Hatte das gleiche problem, aber mit einem dependantObservable als Quelle für die foreach-Vorlage,
leider ist der ko.utils.arrayIndexOf hat nicht funktioniert...
Lösung: wurde eine Funktion erstellt, neu erstellt das array zurückgegeben von der dependantObservable und benutzte einfach den js indexOf-Funktion mit dem Item:
Et voilà, der erwartet, dass der index in der jQuery-tpl.
InformationsquelleAutor Mat