gpt4 book ai didi

knockout.js - knockout 计算的 bool 值不更新

转载 作者:行者123 更新时间:2023-12-02 22:05:24 26 4
gpt4 key购买 nike

这是一个简单的 View 模型:

var vm = {
isValid1: ko.observable(false),
isValid2: ko.observable(false),
isValid3: ko.observable(false),
isValid4: ko.observable(false),

isAllValid: ko.computed(function() {
return isValid1() && isValid2() && isValid3() && isValid4();
});
}

像这样更新 isValid 并将它们全部设置为 true 时:

vm.isValid1(true);
vm.isValid2(true);
vm.isValid3(true);
vm.isValid4(true);

isAllValid 似乎永远不会更新。我在这里做错了什么?

谢谢

尼古拉斯

最佳答案

如果您使用对象文字作为 View 模型,您需要在初始声明之后定义您的computed:

var vm = {
isValid1: ko.observable(false),
isValid2: ko.observable(false),
isValid3: ko.observable(false),
isValid4: ko.observable(false)
}

vm.isAllValid = ko.computed(function() {
return vm.isValid1() && vm.isValid2() && vm.isValid3() && vm.isValid4();
});

这是必需的,因为对象字面量和作用域在 javascript 中的工作方式。无论如何,如果您的 View 模型变得复杂(例如具有累积属性等),最好使用构造函数作为您的 View 模型。

进一步阅读:Difference between knockout View Models declared as object literals vs functions

关于knockout.js - knockout 计算的 bool 值不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16211321/

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