我有这个模型
var MarketResearch = function (data) {
var self = this;
self.Validate = function() {
if (!self.isValid()) {
self.errors.showAllMessages();
return false;
}
return true;
};
this.id = data ? data.id : 0;
this.city = ko.observable(data ? data.city : '').extend({ required: true });
this.since = ko.observable(data ? data.since : '').extend({ required: true });
this.title = ko.observable(data ? data.title : '').extend({ required: true });
}
以下是观点:
function onDocumentReady() {
koValidationConfig()
// initializeDataPickers(market);
// createCkEditor('market_editor');
ko.applyBindings(market, document.getElementById("market-form"));
}
var market = new MarketResearch(null);
function onSaveMarketClicked() {
market.errors.showAllMessages();
}
function koValidationConfig() {
ko.validation.rules.pattern.message = 'Invalid.';
ko.validation.configure({
// registerExtenders: true,
messagesOnModified: true,
insertMessages: true,
decorateInputElement: true,
});
ko.validation.registerExtenders();
}
我这里有一些必填字段。当我在字段中没有放置任何内容时,它会显示“此字段是必需的”并为表单元素着色。 但是market.errors总是未定义的,所以我无法检查表单是否有效!
market.errors.showAllMessages();
也不行。
定义了Ko.validation,我检查了。
怎么了?
答案 0 :(得分:1)
ko.validation
向观察者添加errors
属性,而不是模型。您还需要在observable上使用.extend
来启用验证。