[英]Prevent an observable from being set in specific cases
Is it possible to overload the setter on observable to prevent setting its value in some cases? 是否可以在可观察量上重载setter以防止在某些情况下设置其值? Say with a function which will trigger before setting observable, like this: 假设在设置observable之前将触发的函数,如下所示:
function(value) {
if (value === 'ok') {
proceed; //set value of observable
} else {
break; //do not set observable
}
}
I guess that it can be achieved by using subscriptions, but I am not fully aware how. 我想它可以通过使用订阅来实现,但我不完全清楚如何。
Not that I'm using knockout 3.0. 不是说我正在使用淘汰赛3.0。
You can use writable computed observable with read
and write
functions: 您可以使用可写的计算观察到与read
和write
功能:
var _prop = ko.observable();
var prop = ko.computed({
read: function() {
return _prop();
},
write: function(value ) {
if (value === 'ok') {
_prop(value); //set value of observable
}
// else do not set observable
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.