観測値の変更を拒否/取り消す方法はありますか?このよう :観測値の変更を拒否する
observable.subscribe (function (newvalue) {
if (newvalue < 0) {
// cancel changing
}
else{
// proceed with change
}
}, this)
観測値の変更を拒否/取り消す方法はありますか?このよう :観測値の変更を拒否する
observable.subscribe (function (newvalue) {
if (newvalue < 0) {
// cancel changing
}
else{
// proceed with change
}
}, this)
編集:私は何かを見つけ
:書き込み可能な計算観測。ここで
は一例です:
function AppViewModel() {
this.field = ko.observable("initValue");
this.computedField = ko.computed({
read: function() {
return this.field();
},
write: function (value) {
if(value > 0) {
this.field(value);
}
},
owner: this
});
}
それではあなたは、計算フィールドにバインドします。
/編集
私はカスタムバインディングを使用します。ここで
がカスタムバインディングのためのチュートリアルです:私は次のように使用し、書き込み値を拒否する助けるために http://knockoutjs.com/documentation/custom-bindings.html
: http://learn.knockoutjs.com/#/?tutorial=custombindings
またはここではドキュメントです
私はこのコードでノックアウトを拡張:
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;
};
は次のようにオブジェクトにそれを使用します。
field = ko.conditionedObservable<number>(null, (v) => parseInt(v) > 0);
以上説明については、私のConditioning Knockout Observables: reject valuesのブログを確認してください。