我有一组复选框,用于控制页面上一组项目的可见性。我试图添加一些功能,这样当没有选中任何一个框时,所有项目都会显示出来。
我想我的第一个问题是,我可以在数据绑定中使用逻辑运算符,因为我在下面做了吗?从这里的文档(http://knockoutjs.com/documentation/binding-syntax.html)看来我应该能够。我试图避免为所有复选框创建一组额外的计算器。如果可能的话,我做错了什么?
<div data-bind="visible: (showStaff() || showAll())" class="procedure">
当我在Chrome中查看KnockoutJS检查器时,看起来好像只有&#34; showStaff()&#34;正在评估,而不是表达的其余部分。我也尝试了以下内容,因为我知道showStaff()和showAP()都有效。它仍然只评估了上半年。
<div data-bind="visible: (showStaff() || showAP())" class="procedure">
这是我的js:
var self = this;
self.showAP = ko.observable(true);
self.showTR = ko.observable(true);
self.showSR = ko.observable(true);
self.showStaff = ko.observable(true);
self.showNSW = ko.observable(true);
self.showGA = ko.observable(true);
self.showP14 = ko.observable(true);
self.showSW = ko.observable(true);
self.showAll = ko.computed(function () {
var show;
if (!self.showAP && !self.showTR && !self.showSR && !self.showStaff && !self.showNSW && !self.showGA && !self.showP14 && !self.showSW) {
showAll = true;
return show;
}
else {
showAll = false;
return show;
}
});
答案 0 :(得分:0)
你以错误的方式使用observable。修改您的计算如下:
self.showAll = ko.computed(function () {
var show;
if (!self.showAP() && !self.showTR() && !self.showSR() && !self.showStaff() && !self.showNSW() && !self.showGA() && !self.showP14() && !self.showSW()) {
show = true;
return show;
}
else {
show = false;
return show;
}
});
答案 1 :(得分:0)
如果你想要一个可观察的值,你应该添加()。
self.showAll = ko.computed(function () {
var show;
if (!self.showAP() && !self.showTR() && !self.showSR() && !self.showStaff() && !self.showNSW() && !self.showGA() && !self.showP14() && !self.showSW()) {
showAll = true;
return show;
}
else {
showAll = false;
return show;
}
});