Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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 knockoutJs,何时使用ko.computed_Knockout.js - Fatal编程技术网

Knockout.js knockoutJs,何时使用ko.computed

Knockout.js knockoutJs,何时使用ko.computed,knockout.js,Knockout.js,我被柯搞糊涂了。不知道什么时候用。我有两个陈述。你能给我解释一下有什么区别,什么时候用吗 self.fullName = ko.computed(function() { return self.firstName() + " " + self.lastName(); }); self.fullName = function() { return self.firstName() + " " + self.lastName(); }; 对于显示全名,这些选项中的任何一个都会

我被柯搞糊涂了。不知道什么时候用。我有两个陈述。你能给我解释一下有什么区别,什么时候用吗

self.fullName = ko.computed(function() {
    return self.firstName() + " " + self.lastName();
});


self.fullName = function() {
    return self.firstName() + " " + self.lastName();
};

对于显示全名,这些选项中的任何一个都会产生相同的结果。对一个函数来说,更好的区别在于您可以指定一个读写子函数。这样,您可以使用计算值而不是单独的函数来更改观测值

在中,您可以看到如果更改firstName或lastName,两者都将更改。但是,如果您更改计算出的名字或姓氏,它将更改该名字和函数


另外,有关更多示例,请参见。

不同之处在于,当您使用ko.computed时,如果您绑定到fullName,则当firstName或lastName发生更改时,fullName将自动更新。如果没有ko.computed,您将不得不自己完成这项工作。

如果我错了,请纠正我。如果我更改了名字的值,网页将自动更新全名。如果我不使用ko.computed,我需要调用fullname来更新值。显示没有区别。我想如果你不使用computed,你必须使用subscribe。非常感谢你在fiddle上显示你的代码。现在我明白了这两者之间的区别。