Knockout.js 订阅同一事件以获得淘汰赛中的多个观测值
我试图用knockout实现以下行为:当一个用户提交他的登录名和密码时,它是错误的——向他显示错误消息。当用户更改任何输入时-隐藏消息 我用computed observable进行了尝试,了解到这不是正确的方法,在阅读了相关文档后,我发现。因此,当我订阅每个Knockout.js 订阅同一事件以获得淘汰赛中的多个观测值,knockout.js,knockout-3.0,Knockout.js,Knockout 3.0,我试图用knockout实现以下行为:当一个用户提交他的登录名和密码时,它是错误的——向他显示错误消息。当用户更改任何输入时-隐藏消息 我用computed observable进行了尝试,了解到这不是正确的方法,在阅读了相关文档后,我发现。因此,当我订阅每个输入时,一切都很顺利。问题是我订阅了同一事件的两个观测值(因此复制了代码)。我知道我可以将重复的代码放入一个函数中,并将每个可观察的对象订阅到该函数中,但这在我看来也不太好 这句空话够了,下面是我的(点击make it error,然后在i
输入时,一切都很顺利。问题是我订阅了同一事件的两个观测值(因此复制了代码)。我知道我可以将重复的代码放入一个函数中,并将每个可观察的对象订阅到该函数中,但这在我看来也不太好
这句空话够了,下面是我的(点击make it error,然后在input
中键入一些内容),下面是我的做法:
this.loginText.subscribe(function () {
self.isError(false);
});
this.passwordText.subscribe(function () {
self.isError(false);
});
我试图阅读,但无法理解如何准确地订阅同一事件的多个观测值。您应该使用computed observable。当相关可观测值发生变化时,每次计算可观测值。因此,您可以简单地列出计算可观察对象中的所有可观察对象(绑定到您的输入),并更改其中至少一个调用计算函数
function User() {
var self = this;
self.loginText = ko.observable(null);
self.passwordText = ko.observable(null);
self.isError = ko.observable(false);
self.makeWrong = function(){
self.isError(true);
}
ko.computed(function() {
self.loginText();
self.passwordText();
self.isError(false);
});
}
您应该使用计算的可观察值。当相关可观测值发生变化时,每次计算可观测值。因此,您可以简单地列出计算可观察对象中的所有可观察对象(绑定到您的输入),并更改其中至少一个调用计算函数
function User() {
var self = this;
self.loginText = ko.observable(null);
self.passwordText = ko.observable(null);
self.isError = ko.observable(false);
self.makeWrong = function(){
self.isError(true);
}
ko.computed(function() {
self.loginText();
self.passwordText();
self.isError(false);
});
}
您应该使用计算的可观察值。当相关可观测值发生变化时,每次计算可观测值。因此,您可以简单地列出计算可观察对象中的所有可观察对象(绑定到您的输入),并更改其中至少一个调用计算函数
function User() {
var self = this;
self.loginText = ko.observable(null);
self.passwordText = ko.observable(null);
self.isError = ko.observable(false);
self.makeWrong = function(){
self.isError(true);
}
ko.computed(function() {
self.loginText();
self.passwordText();
self.isError(false);
});
}
您应该使用计算的可观察值。当相关可观测值发生变化时,每次计算可观测值。因此,您可以简单地列出计算可观察对象中的所有可观察对象(绑定到您的输入),并更改其中至少一个调用计算函数
function User() {
var self = this;
self.loginText = ko.observable(null);
self.passwordText = ko.observable(null);
self.isError = ko.observable(false);
self.makeWrong = function(){
self.isError(true);
}
ko.computed(function() {
self.loginText();
self.passwordText();
self.isError(false);
});
}
如果您不想使用ko.computed,那么您可以使用extender。有关扩展器的详细信息
因此,对于相同的功能,将使用扩展器
ko.extenders.ErrorCheck = function(target, option) {
target.subscribe(function(newValue) {
console.log("new Value is " + newValue);
self.isError(false);
});
return target;
};
可以观察到的是:-
this.loginText = ko.observable(null).extend({ErrorCheck:""});
this.passwordText = ko.observable(null).extend({ErrorCheck:""});
如果您不想使用ko.computed,那么您可以使用extender。有关扩展器的详细信息
因此,对于相同的功能,将使用扩展器
ko.extenders.ErrorCheck = function(target, option) {
target.subscribe(function(newValue) {
console.log("new Value is " + newValue);
self.isError(false);
});
return target;
};
可以观察到的是:-
this.loginText = ko.observable(null).extend({ErrorCheck:""});
this.passwordText = ko.observable(null).extend({ErrorCheck:""});
如果您不想使用ko.computed,那么您可以使用extender。有关扩展器的详细信息
因此,对于相同的功能,将使用扩展器
ko.extenders.ErrorCheck = function(target, option) {
target.subscribe(function(newValue) {
console.log("new Value is " + newValue);
self.isError(false);
});
return target;
};
可以观察到的是:-
this.loginText = ko.observable(null).extend({ErrorCheck:""});
this.passwordText = ko.observable(null).extend({ErrorCheck:""});
如果您不想使用ko.computed,那么您可以使用extender。有关扩展器的详细信息
因此,对于相同的功能,将使用扩展器
ko.extenders.ErrorCheck = function(target, option) {
target.subscribe(function(newValue) {
console.log("new Value is " + newValue);
self.isError(false);
});
return target;
};
可以观察到的是:-
this.loginText = ko.observable(null).extend({ErrorCheck:""});
this.passwordText = ko.observable(null).extend({ErrorCheck:""});