Das Änderungsereignis des Kontrollkästchens Knockout sendet den alten Wert

Ich habe ein Problem mit der "überprüften" Knockout-Bindung. Es sieht so aus, als ob das "change" -Ereignis beim Aktivieren des Kontrollkästchens einen alten Wert zurückgibt, bevor es aktualisiert wird. Wenn es deaktiviert ist, wird "false" zurückgegeben. Ich glaube nicht, dass ich den Wert abonnieren kann, da ich ihn in object habe.

<tbody data-bind="foreach: Categories">
                <tr>
                    <td><input type="checkbox" data-bind="checked: ShowOpened, event: { change: $root.CategoryChange }" /></td>
                </tr>
            </tbody>
<script type="text/javascript">
var Category = function (Id, Name, Order, ShowOpened) {
    this.Id = Id;
    this.Name = Name;
    this.Order = Order;
    this.ShowOpened = ShowOpened;
    this.IsUpdated = ko.observable(false);

    this.OldOrder = Order;
    this.OldShowOpened = ShowOpened;
};
var ViewModel = {
    Categories: ko.observableArray([]),
    CategoryChange: function(pCategory) {
        if(pCategory.Order != pCategory.OldOrder || pCategory.ShowOpened != pCategory.OldShowOpened)
            pCategory.IsUpdated(true);
        else
            pCategory.IsUpdated(false);
    }
};
ko.applyBindings(ViewModel);
</script>

In diesem Beispiel gibt es also das Kontrollkästchen ShowOpened, das die CategoryChange-Methode auslösen kann, mit der eine Variable im Objekt geändert wird (damit ich später weiß, welches Objekt aktualisiert wird). Aber wenn die Kontrollbox geändert wird, wird immer der alte Wert gesendet, die Methode ausgelöst und dann der Wert geändert. Gibt es eine Möglichkeit, dies zu beheben?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage