我正在使用knockout.js,我想检查两个文本输入是否有值集。如果是,那就做点什么。
以下工作,但我想知道是否有“淘汰”方式使用自定义绑定或其他方式。我只是想了解更多关于淘汰赛的内容,以便能够在未来更复杂的情况下利用其功能。
function DatesViewModel(startDate,endDate){
var self = this;
self.startDate = ko.observable("");
self.endDate = ko.observable("");
self.startDate.subscribe(function(newValue) {
check_dates();
});
self.endDate.subscribe(function(newValue) {
check_dates();
});
function check_dates(){
if(self.startDate() !== "" && self.endDate() !== ""){
alert('values set');
}
}
}
我尝试使用计算函数来做DoctorMick建议的事情,但要么我误解了它的使用,要么它只是不起作用。
self.datesEntered = ko.computed(function() {
if(self.startDate() !== "" && self.endDate() !== ""){
return self.startDate() && self.endDate();
}
});
self.datesEntered.subscribe(function() {
alert(self.datesEntered);
});
每次更改任一日期时都会触发警报。而且,它只是返回一堆代码。
答案 0 :(得分:1)
这取决于你实际想要实现的目标,但我会根据上面的片段使用计算器,所以......
self.DatesEntered = ko.computed(function() {
return self.startDate() && self.endDate();
});
self.datesEntered.subscribe(function(value) {
if(value) {
alert("Hurrah, both values entered");
}
});
通过这种方式,您可以绑定或订阅DatesEntered并在键入之后执行任何您喜欢的操作。正如您所看到的,它可以非常简单地简化原始代码。