Knockoutjs case événement a changé
J'ai des cases à cocher lié à un groupe dans mon modèle. Cela fonctionne très bien, lorsque vous cochez une case du tableau est mis à jour en conséquence.
Toutefois, lorsque la valeur a changé, je souhaite appeler une méthode sur mon modèle pour filtrer les résultats étant donné les nouvelles valeurs. J'ai essayé de brancher le changement de l'événement, mais il semble que les valeurs avant le changement, plutôt qu'après le changement.
J'ai illustré mon problème dans un jsfiddle http://jsfiddle.net/LpKSe/ qui pourrait faire plus de sens.
Pour l'intégralité de mon code est répété ici.
JS
function SizeModel() {
var self = this;
self.sizes = ko.observableArray(["small", "medium", "large"]);
self.sizes2 = ko.observableArray(["small", "medium", "large"]);
self.getResults = function(e) {
alert(self.sizes());
};
self.getResults2 = function(e) {
alert(self.sizes2());
};
}
$(document).ready(function() {
sizeModel = new SizeModel();
ko.applyBindings(sizeModel);
});
Html
<h3>Size
<input type="checkbox" value="small" data-bind=" checked: sizes, event:{change: getResults}"/>
<span class='headertext'>Small</span>
<input type="checkbox" value="medium" data-bind=" checked: sizes, event:{change: getResults}" />
<span class='headertext'>Medium</span>
<input type="checkbox" value="large" data-bind=" checked: sizes, event:{change: getResults}" />
<span class='headertext'>Large</span>
</h3>
<h3>Size
<input type="checkbox" value="small" data-bind=" checked: sizes2, event:{click: getResults2}"/>
<span class='headertext'>Small</span>
<input type="checkbox" value="medium" data-bind=" checked: sizes2, event:{click: getResults2}" />
<span class='headertext'>Medium</span>
<input type="checkbox" value="large" data-bind=" checked: sizes2, event:{click: getResults2}" />
<span class='headertext'>Large</span>
</h3>
OriginalL'auteur Mingo | 2012-06-24
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de modifier l'événement. Si vous vous abonnez à la observableArray vous serez notifié lors de son changement, et être passé à la mise à jour du tableau: http://jsfiddle.net/jearles/LpKSe/53/
OriginalL'auteur John Earles
Dans votre violon vous manque des virgules dans votre
data-bind
-s, voici un fixe exemple: http://jsfiddle.net/4aau4/1/Re le problème - c'est peut-être un KnockoutJS problème lié (c'est à dire de la mise à jour de la observableArray après la
change
événement est déclenché), ou quelque chose de semblable à ce que j'ai coincé sur il y a quelques temps: Les cases à cocher sont en cours de vérification avant de cliquez sur gestionnaire est même appeléEDIT:
Ce difficile de dimanche, je pense que je ne suis pas encore réveillé 🙂
Prendre un coup d'oeil à cet extrait: http://jsfiddle.net/4aau4/2/ - il ressemble à DOM est correctement mis à jour et c'est
ko.observableArray
qui sont à la traîne. ($('input:checked').length
dit combien de cases sont effectivement vérifié).OriginalL'auteur Tomasz Zielinski