Aby odrzucić wartości zapisu użyłem następujące:
- Tworzenie ukryty obserwowalne przechowuje wartość.
- Zwraca zapisywalne obliczalne observable oparte na ukrytym obserwowalnym.
- Kiedy coś jest zapisane w obliczonym obserwowalnym, sprawdź je przed zaakceptowaniem.
ja przedłużony Knockout z tym kodem:
ko.conditionedObservable = function (initialValue, condition) {
var obi = ko.observable(initialValue);
var computer = ko.computed({
read: function() { return obi(); },
write: function (newValue) {
//unwrap value - just to be sure
var v = ko.unwrap(newValue);
//check condition
if (condition(v)) {
//set it to the observable
obi(v);
}
else {
//reset the value
computer.notifySubscribers();
}
}
});
return computer;
};
Użyj go w obiekcie tak:
field = ko.conditionedObservable<number>(null, (v) => parseInt(v) > 0);
Dalsze wyjaśnienia sprawdź mój Conditioning Knockout Observables: reject values bloga.