La question dit tout vraiment. Je veux copier un tableau observable à un autre dans KnockoutJS.
Réponses
Trop de publicités?Pour cloner un observableArray, vous voudrez faire:
var viewModel = {
array1: ko.observableArray(["one", "two"]),
array2: ko.observableArray()
};
viewModel.clone = function() {
viewModel.array1(viewModel.array2.slice(0));
};
Si vous voulez juste faire une copie, alors vous feriez:
viewModel.array1(viewModel.array2());
Le problème avec le deuxième exemple est que le tableau sous-jacent est le même, aussi, si vous appuyez sur array1 ou array2, les deux auront la nouvelle valeur (puisqu'ils pointent tous deux vers le même tableau).
J'étais confronté à la même tâche; cloner un tableau observable. La seule raison pour laquelle j'ai pu comprendre comment le faire est de convertir l'observable en objet JS, puis de convertir cet objet en objet observable. La fonction suivante nécessite le plug-in de cartographie KnockoutJS: http://knockoutjs.com/documentation/plugins-mapping.html
function cloneObservable(observableObject) {
return ko.mapping.fromJS(ko.toJS(observableObject));
}
J'espère que cela t'aides