Vous ne pouvez pas appliquer les liaisons plusieurs fois le même élément
J'ai un Bootstrap modal, et à chaque fois qu'il se montre, je vais utiliser KO pour lier un <select
> liste déroulante.
HTML:
<select id="album" name="album" class="form-control" data-bind="options: availableAlbums">
</select>
JavaScript:
$('#uploadModal').on('show.bs.modal', (function () {
function AlbumsListViewModel() {
var self = this;
self.availableAlbums = ko.observableArray([]);
$.ajax({
url: "../../api/eventapi/getalbums",
type: "get",
contentType: "application/json",
async: false,
success: function (data) {
var array = [];
$.each(data, function (index, value) {
array.push(value.Title);
});
self.availableAlbums(array);
}
});
}
ko.applyBindings(new AlbumsListViewModel());
}));
Cependant, sur le deuxième indice, KO vais me présenter avec cette erreur:
Erreur: Vous ne pouvez pas appliquer les liaisons plusieurs fois le même élément.
OriginalL'auteur Alvin | 2014-01-05
Vous devez vous connecter pour publier un commentaire.
Le message d'erreur dit plus. Vous avez deux options:
applyBindings
fonction qu'une seule fois, lorsque votre page se charge. KO mettra automatiquement à jour la Vue lorsque vous mettez à jour le modèle en AJAX succès fonction.applyBIndings
fonction sur chaque AJAX succès, mais fournir des paramètres supplémentaires à dire ce que l'élément à lier à.Plus probable que la première option est ce que vous cherchez. Supprimer l'appel de la
$('#uploadModal').on
appel et le placer sur le document de charge (si vous ne l'avez pas déjà).Pour voir ce que je veux dire, ici, de deux violons:
Ce dernier essaie de rester aussi proche que possible de votre version initiale (afin de se concentrer sur le problème à portée de main), et remonte le long de ces lignes:
OriginalL'auteur Jeroen