Tous les exemples de knockout que j'ai trouvés semblent ajouter un nouvel élément à la fin d'un ObservableArray en utilisant quelque chose comme:
viewModel.SomeItems.Push(someNewItem);
Bien sûr, cela place l'élément à la fin du tableau.
Comment ajouter un élément au ObservableArray à une certaine position?
par exemple. quelque chose comme:
viewModel.SomeItems.Push(someNewItem, indexToInsertItAt);
Vous devriez pouvoir utiliser la méthode JavaScript splice
native -
viewModel.SomeItems.splice(2,0,someNewItem);
Documents ici - https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice
Exemple ici (non spécifique à Knockout) - Comment insérer un élément dans un tableau à un index spécifique?
Depuis les documents Knockout -
Pour les fonctions qui modifient le contenu du tableau, telles que Push et splice, les méthodes de KO déclenchent automatiquement le mécanisme de suivi des dépendances afin que tous les écouteurs enregistrés soient informés de la modification et que votre interface utilisateur soit automatiquement mise à jour.
Pour une utilisation par élimination directe
viewModel.SomeItems.unshift(someNewItem);
Voir aussi: http://knockoutjs.com/documentation/observableArrays.html
J'ai fait cette fonction d'extension qui fonctionnait bien pour moi. Splice ne fonctionnait pas pour moi si j'ajoutais à la fin d'un tableau clairsemé.
ko.observableArray.fn.setAt = function(index, value) {
this.valueWillMutate();
this()[index] = value;
this.valueHasMutated();
}
Cela fonctionne même avec:
var a = ko.observableArray(['a', 'b', 'c']);
a.setAt(42, 'the answer');