我在尝试执行以下操作时遇到了问题:
newNoteText: ko.observable().extend({ required: { onlyIf: function () { return this.ShowNote == true } } })
我注意到这不起作用,但是当我像这样把代码放回去时,它工作得很好:
newNoteText: ko.observable().extend({ required: true })
最佳答案
使用 onlyIf
的正确语法规则上的选项是:
newNoteText: ko.observable().extend({
required: {
onlyIf: function(){
return someFlagIsTrue;
}
}
比照。 this answer回答您之前的问题之一(作者:Eric Barnard,Knockout Validation 的主要贡献者)。
关于您的代码,除了 Knockout Validation 的语法之外,还有两件事需要担心:
return something == true
与return something
相同(不提及 JavaScript 处理==
和===
运算符的方式,请参阅有关此 here 的更多信息)。在您的函数中,
this
的值并不是你想象的那样(这里指的是extend()
括号之间的参数)。
如果您想访问 View 模型的其他可观察量之一的值,您应该执行以下操作:
newNoteText: ko.observable().extend({
required: {
onlyIf: function(){
return self.ShowNote();
}
}
self 在 View 模型构造函数的顶部定义,例如 var self = this;
。查看有关此模式的更多信息 here .
关于asp.net-mvc-3 - 使用 onlyIf 进行验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14990033/