Questo è probabilmente abbastanza semplice ma non riesco a trovarlo facilmente. In knockout.js, come stamperesti l'indice di un oggetto in un array osservabile su cui stai iterando usando il binding foreach?Knockout.js stampa l'indice dell'oggetto in foreach
risposta
ko 2.1 ha aggiunto buona opzione nuovo $ indice. Ecco l'esempio http://knockoutjs.com/documentation/foreach-binding.html
Non è possibile. Non direttamente comunque. Io uso questa funzione me stesso per aggiungere una proprietà indice per gli oggetti nei miei ObservableArrays:
function indexSubscribe(array) {
array.subscribe(function() {
for (var i = 0, j = array().length; i < j; i++) {
var item = array()[i];
if (!item.index) {
item.index = ko.observable(i);
} else {
item.index(i);
}
}
});
};
Poi nel mio ViewModel, posso fare qualcosa di simile:
this.whatevers = ko.observableArray();
indexSubscribe(this.whatevers);
+1, soluzione lucida – Tyrsius
La soluzione seguente potrebbe essere una risposta tardiva. Ma se la tua scelta preferibile è con viewmodel
la soluzione qui sotto ti aiuterà con l'ultima correzione.
In base alle librerie Knockout 3.1.0
e successive è semplice aggirare. È possibile passare index
come argomento secondario a arrayForEach
.
var items = ["Mercedes", "Volvo", "BMW"];
ko.utils.arrayForEach(items, function(item, index) {
console.log(item + ' ' + index);
});
Spero che questa soluzione possa aiutare qualcuno.
- 1. nested foreach in knockout.js
- 2. knockout.js nested foreach accesso proprietà loop esterno
- 3. Knockout.js - vincolante foreach - prova se ultimo elemento
- 4. Come renderizzare tr condizionalmente in knockout.js foreach binding
- 5. Knockout.js containerless "foreach" non funziona con <table>
- 6. Knockout.js foreach: ma solo quando il confronto è vero
- 7. Perl ciclo foreach stampa solo una riga
- 8. Indice di accesso di $ parent in knockout.js
- 9. knockout.js: utilizzando un foreach containerless su un <select> fallisce in Internet Explorer 8
- 10. Disabilita tag di ancoraggio in knockout.js
- 11. Knockout.js - parametri di passaggio
- 12. knockout.js foreach ripete l'elemento td nella tabella, ma non l'elemento tr
- 13. ID univoci in knockout.js modelli
- 14. Comportamento di 'foreach' in Perl
- 15. Knockout.js: Legatura per oggetto complesso
- 16. Asp.net MVC 4 API e Knockout.js: generazione dei modelli Knockout.js
- 17. Knockout.js ViewModel cambia callback?
- 18. Knockout.js nested binding bindings
- 19. KnockOut.js con Asp.net mvc
- 20. foreach vs ForEach utilizzando yield
- 21. wrapping knockout.js con clojurescript
- 22. Knockout.js e MVC
- 23. MVVM con Knockout.js
- 24. "[] .forEach"
- 25. knockout.js binding ricorsivo
- 26. Lista di ordinamento Knockout.js
- 27. knockout.js: aggiorna i collegamenti?
- 28. Knockout.js con jQuery tablesorter
- 29. LabelFor() in un foreach
- 30. C# Azione in Foreach
In KO 2.1.0 (beta è ora disponibile), è possibile utilizzare '$ index' per ottenere l'indice all'interno di un foreach. Ecco la discussione beta: https://groups.google.com/d/topic/knockoutjs/LdUfjGNZOj8/discussion. Simile a ciò che Matt descrive nella sua risposta, uso questa tecnica (aggiungi la funzione 'indexed' a observableArrays): http://stackoverflow.com/questions/9760861/apply-a-class-to-every-nth-template- element-with-knockoutjs –
@RPNiemeyer: Sono sicuro al 98% che l'ho rubato da te sul forum Knockout! –
@MattBurland no worries! –