Um Schreibwerte lehne ich verwendet, um die folgenden:
- Erstellen einer beobachtbaren versteckt Das speichert den Wert.
- Geben Sie eine schreibbare berechnete Observable zurück, die auf der versteckten Observablen basiert.
- Wenn etwas in das berechnete Observable geschrieben wird, validiere es, bevor du es akzeptierst.
I erweiterte Knockout mit diesem Code:
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;
};
es im Objekt wie folgt verwendet:
field = ko.conditionedObservable<number>(null, (v) => parseInt(v) > 0);
Für weitere Erklärung meines Conditioning Knockout Observables: reject values Blog überprüfen.