Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js 即使我处理了它,计算可观测仍然触发写入。这是正确的行为吗?_Knockout.js - Fatal编程技术网

Knockout.js 即使我处理了它,计算可观测仍然触发写入。这是正确的行为吗?

Knockout.js 即使我处理了它,计算可观测仍然触发写入。这是正确的行为吗?,knockout.js,Knockout.js,即使我处理了它,计算可观测仍然触发写入。这是正确的行为吗?我不明白原因 处理一个计算的可观察对象将使其清除所有订阅。因此,尽管您仍然可以对其进行写入,但read函数将不会再次运行。Disposition不会使计算的订阅无效,它旨在确保没有延迟订阅 例如,在此更新的示例中,请尝试处理计算出的名称并更改firstName字段 处理计算出的可观察对象将使其清除所有订阅。因此,尽管您仍然可以对其进行写入,但read函数将不会再次运行。Disposition不会使计算的订阅无效,它旨在确保没有延迟订阅 例

即使我处理了它,计算可观测仍然触发写入。这是正确的行为吗?我不明白原因

处理一个计算的可观察对象将使其清除所有订阅。因此,尽管您仍然可以对其进行写入,但
read
函数将不会再次运行。Disposition不会使计算的订阅无效,它旨在确保没有延迟订阅

例如,在此更新的示例中,请尝试处理计算出的名称并更改
firstName
字段


处理计算出的可观察对象将使其清除所有订阅。因此,尽管您仍然可以对其进行写入,但
read
函数将不会再次运行。Disposition不会使计算的订阅无效,它旨在确保没有延迟订阅

例如,在此更新的示例中,请尝试处理计算出的名称并更改
firstName
字段


你能再解释一下吗,你的问题到底是什么?实际上我没有问题,我正在试图了解它的行为。即使我处理了它,触发写入也没有意义。有什么我看不到的好处吗?你能再解释一点吗,你的问题到底是什么?实际上我没有问题,我正在努力理解它的行为。即使我处理了它,触发写入也没有意义。有什么我看不到的好处吗?
function MyViewModel() {
    var self = this;
    this.firstName = ko.observable('Planet');
    this.lastName = ko.observable('Earth');
    this.computedState = ko.observable(false);

    this.fullName = ko.computed({
        read: function () {
            console.log("READ");            
            return this.firstName() + " " + this.lastName(); 
        },
        write: function (value) {
            console.log("WRITE");    
            var lastSpacePos = 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,

        disposeWhen : function(){ return self.computedState(); }
    });
}

ko.applyBindings(new MyViewModel());