我有一个视图模型,在那里我有扩展使用验证的属性。我调用ko.validation.group(self),但这不会将isValid()方法添加到视图模型。基因敲除验证isValid()不起作用
所以我得到一个isValid()未定义的错误。
这里是我的代码:
var brechtbaekelandt = brechtbaekelandt || {};
brechtbaekelandt.login = (function ($, jQuery, ko, undefined) {
"use strict";
function LoginViewModel() {
var self = this;
self.userName = ko.observable();
self.password = ko.observable();
self.rememberMe = ko.observable();
self.errorMessage = ko.observable();
self.userName.extend({ required: { message: 'Please enter your username' } });
self.password.extend({ required: { message: 'Please enter your password' } });
self.errors = ko.validation.group(self);
};
LoginViewModel.prototype.login = function() {
var self = this;
self.errorMessage(null);
alert('entering login');
// self.isValid() is not a function
if (!self.isValid()) {
alert('login invalid');
self.errors.showAllMessages();
return;
}
else
{
alert('login valid');
// do login
}
};
function init() {
alert('entering init');
var knockoutValidationSettings = {
insertMessages: false,
decorateElement: true,
decorateElementOnModified: true,
decorateInputElement: true,
//errorMessageClass: 'error',
//errorElementClass: 'error',
//errorClass: 'error',
errorsAsTitle: false,
parseInputAttributes: false,
messagesOnModified: true,
messageTemplate: null,
grouping: { deep: true, observable: true }
};
ko.validation.init(knockoutValidationSettings, true);
var viewModel = new LoginViewModel();
ko.applyBindingsWithValidation(viewModel);
}
return {
LoginViewModel: LoginViewModel,
init: init
};
})($, jQuery, ko);
我创建了一个JS提琴:click here
我读过的地方,你需要调用registerExtenders(),但我尝试过了,它不工作。
有人可以帮助我在正确的方向吗?谢谢!
像这样的HTTP工作样品与group
工作示例://的jsfiddle .net/supercool/hu6rgjjm/7 /。让我知道' –
是的,我知道这一个,我知道它的工作原理,但在文档中它说我的方法也应该工作,并且ko.validation.group(self)应该将isValid()添加到self。如果真的没有解决方案,我会明确地使用你的例子超酷!谢谢! 有人有同样的问题,但它使用ko.validation.group()解决... http://stackoverflow.com/questions/16802788/knockout-viewmodel-isvalid-error-when-using- knockout-validation-plugin –
'validatedObservable'在后台调用组并在错误属性中存储,稍后我们调用showAllMessages。我从来没有尝试用'组'作为替代。 Imho你可以随着小提琴版本去,无论如何,我会试着看你在看什么。欢呼 –