Zdarzenie zmiany pola wyboru Knockout wysyła starą wartość

Mam problem z wiązaniem „sprawdzonym” z nokautem. Wydaje się, że zdarzenie „change” w polu wyboru zwraca starą wartość, zanim zostanie zaktualizowane (więc jeśli było odznaczone, zwróci false). Nie sądzę, że mogę subskrybować wartość, ponieważ mam ją w obiekcie.

<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>

Tak więc w tym przykładzie mam pole wyboru ShowOpened, które może wywołać metodę CategoryChange, która zmieni zmienną wewnątrz obiektu (potrzebuję później, aby wiedzieć, który obiekt jest aktualizowany). Ale kiedy zmieni się pole wyboru, zawsze wysyła starą wartość, metodę wyzwalania, a następnie zmienia wartość. Czy jest jakiś sposób, aby to naprawić?

questionAnswers(3)

yourAnswerToTheQuestion