防止在特定情况下设置可观察量

时间:2014-10-24 12:12:50

标签: javascript knockout.js overloading

是否可以在observable上重载setter以防止在某些情况下设置其值?比较一个在设置observable之前会触发的函数,如下所示:

function(value) {
    if (value === 'ok') {
        proceed; //set value of observable
    } else {
        break; //do not set observable
    }
}

我想这可以通过使用订阅来实现,但我不完全清楚如何。

不是说我正在使用淘汰赛3.0。

1 个答案:

答案 0 :(得分:6)

您可以将writable computed observablereadwrite函数结合使用:

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
    }
});