我实际上正在使用淘汰赛,并想知道是否有一种方法可以反转淘汰赛属性。我有一个函数IsArchived,并希望创建一个反函数,名为NotArchived。但我遇到了问题。
主要问题是我的输出没有任何差异。例如,我的系统中总共有2000个帐户,其中1500个帐户显示为已存档,2000个帐户显示为非存档。而不是它应该只显示500个非存档帐户。
<li>
<label id="isArchived">
<input type="checkbox" data-bind="checked: isArchived" /><span>Archived</span>
</label>
</li>
<li>
<label id="NotArchived">
<input type="checkbox" data-bind="checked: NotArchived" /><span>Not Archived</span>
</label>
</li
JavaScript的:
function WorkersViewModel() {
var self = this;
var initialized = false;
self.isArchived = ko.observable(false);
self.NotArchived = ko.observable(true);
};
self.navigateToSearch = function(uriArray) {
if (self.isArchived()) {
uriArray.push({
isArchived: true
});
}
if (self.NotArchived()) {
uriArray.push({
NotArchived: false
});
}
self.runSearch = function() {
var parameters = {
IsArchived: self.isArchived() ? true : null,
NotArchived: self.isArchived() ? false : null,
};
答案 0 :(得分:2)
您可以使用computed。
来完成此操作function WorkersViewModel() {
var self = this;
var initialized = false;
self.isArchived = ko.observable(false);
self.NotArchived = ko.computed({
read: function(){ return !self.isArchived() },
write : function(value) { self.isArchived(!value); }
});
};
答案 1 :(得分:0)
根据您需要的评估顺序,您可以使用:
因为已经发布了带有计算observable的解决方案,所以这是一个使用订阅的片段:
self.isArchived = ko.observable(false);
self.isNotArchived = ko.observable(true);
self.isArchived.subscribe(function(newValue) {
self.isNotArchived(!newValue);
});
Anozher的不同之处在于,在实例化视图模型时,计算的observable也将首次被评估,因此通过使用订阅,您应该向两个可观察者提供正确的初始值。