可计算的或可观察的

Computed or observable

本文关键字:观察 可计算      更新时间:2023-09-26

我有一个应用程序,允许我们的客户来到我们的网站,获得报价,然后做回报分析,等等…

有两个部分…引用部分和回报部分

我正在使用knockout来同步字段....所以当客户进来说他们需要一个10 × 10的设备时,我们给他们报价4000美元。该值作为成本复制到"回收期"表中。然后我们扣除节能抵免、投资税收抵免等。提出"净投资"。

只要用户按照正确的方式执行每一步,一切都是可行的。

现在,如果用户已经对他们计划在我们的一个单位上花多少钱有了一个大致的估计,会发生什么?他们不知道他们需要一个10x10的单位,他们只知道他们有5000美元可以投资,想看看这个投资是否有好的回报。因此,这个示例用户跳过报价部分,只想输入他们假设的价格并获得一些数字。

我的视图模型是这样设置的:

self.height = ko.observable('<?php echo $height; ?>'),
self.width = ko.observable('<?php echo $width; ?>'),
/* Math simplified to remove gobbeldygook */
self.cost = ko.computed(function () {return (self.height() * self.width()) * 40;}),

我如何设置"成本",使其自动计算时提供的高度和宽度,但也是可编辑和可更改的UI?

非常感谢您的帮助

Knockout使可写计算观察对象更容易实现这一点。您可以提供一个read函数,在用户访问它时返回值,就像您已经做的那样,但也可以提供当值被写入时发生的逻辑。

根据您的设置,看起来您希望计算成本的写入部分为高度和宽度设置适当的值。

self.cost = ko.computed({
    read: function () { return (this.height() * this.width()) * 40; },
    write: function(value) { /* your logic here to set height and width */ },
    owner: self
});

完整的文档在这里,大约30%的下降: