44 votes

Remplacer tous les éléments dans Knockout.js observableArray

J'ai un observableArray dans mon modèle de vue. Après la création de la vm je souhaite remplacer complètement les données de la observableArray. Voici comment je fais:

//Initial Setup
var vm = {};
vm.roles = ko.observableArray([]);
ko.applyBindings(vm); 


//....replace array later on....
vm.roles(["1", "2"]);

Cela semble fonctionner correctement, mais je me demandais si ce n'était pas correct et pourrait conduire à des fuites de mémoire. Quelqu'un peut-il conforme si ce est la meilleure façon de mettre à jour une observable tableau en supposant que vous souhaitez remplacer toutes ses données? J'ai remarqué observableArray a un removeAll() la méthode et se demande si ce devait être appelés à le faire proprement, ou si je suis très bien avec ce que je fais?

Merci pour toute aide.

41voto

RP Niemeyer Points 81663

La technique que vous utilisez est l'approche recommandée pour remplacer complètement les données dans un observableArray. ObservableArray est en fait simplement une observable normale avec des fonctions supplémentaires ajoutées pour les opérations de tableau utiles qui agissent sur le tableau sous-jacent et les notifications de déclencheur.

-6voto

user887 Points 1

J'ai trouvé que l'approche recommandée ne fonctionne pas dans IE9 ou une version inférieure. Au lieu de cela, j'avais recréé l'objet, vm.roles = ko.observableArray (["1", "2"]).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X