Knockout.js 互动版

可写的计算属性

计算属性是通过计算其他监控属性而得到的一个值。从这个意义上说,计算属性通常情况下是只读的,你可能会比较惊讶,怎么可能让计算属性变的可写。你仅仅只需要提供一个回调函数来实现值的写入。

function MyViewModel() {
    this.firstName = ko.observable('Bob');
    this.lastName = ko.observable('Smith');
    this.fullName = ko.computed({
        read: function () { },
        write: function (value) {
            varlastSpacePos = value.lastIndexOf(" ");
            if (lastSpacePos > 0) {
                // Ignore values with no space character
                this.firstName(value.substring(0, lastSpacePos));
                // Update "firstName"
                this.lastName(value.substring(lastSpacePos + 1));
                // Update "lastName"
            }
        }, owner: this
    });
}
ko.applyBindings(new MyViewModel());

在这个例子当中,write回调事件来处理用户输入的值将其分解成“firstName”和“lastName”两个部分,并将这些值返回到底层监控属性上。