gpt4 book ai didi

javascript - knockout 计算函数称为 "too late"...?

转载 作者:行者123 更新时间:2023-11-30 13:51:33 24 4
gpt4 key购买 nike

我需要一个 knockout 计算函数来直接执行,但它看起来更像是 knockout 对可计算对象进行排队并在需要时执行。有没有办法(除了不使用 knockout 之外)立即执行?

我单步执行了我的代码,看到我的例程继续通过对计算函数的调用,后来我在函数中的断点处停止 - 当它为时已晚。

我已经删除了 95% 的代码,但变量名仍然存在,在这种情况下它们可能看起来有点奇怪......

var self = this;
self.temp = true;

self.UsePatterns = ko.observable(false);

self.UsePatterns.subscribe(function () {
self.ShowReport();
});

self.PatternColors = ko.computed(function () {
var retValue = self.UsePatterns() ? true : false
return retValue;
});

self.ShowReport = function () {
self.temp = self.PatternColors();
alert (self.temp);
};

self.UsePatterns(true);
self.UsePatterns(false);
self.UsePatterns(true);

https://jsfiddle.net/tommypeters/1ubfa4ev/22/

有人会认为这应该得到真、假、真而不是相反...

最佳答案

您应该改用 ko.pureComputed()

var self = this;
self.temp = true;

self.UsePatterns = ko.observable(false);

self.UsePatterns.subscribe(function (nv) {
self.ShowReport();
});

self.PatternColors = ko.pureComputed(function () {
var retValue = self.UsePatterns() ? true : false
return retValue;
});

self.ShowReport = function () {
self.temp = self.PatternColors();
console.log('Show report:',self.temp);
};

self.UsePatterns(true);
self.UsePatterns(false);
self.UsePatterns(true);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

关于javascript - knockout 计算函数称为 "too late"...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58136399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com