Javascript KO验证:未定义model.errors
我有这个型号Javascript KO验证:未定义model.errors,javascript,validation,knockout.js,Javascript,Validation,Knockout.js,我有这个型号 var MarketResearch = function (data) { var self = this; self.Validate = function() { if (!self.isValid()) { self.errors.showAllMessages(); return false; } return true; }; this.id
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();
}
我这里有一些必填字段。当我在字段中不添加任何内容时,它会显示“thisfieldsrequired”,并为表单元素着色。
但是market.errors总是未定义的,所以我无法检查表单是否有效
market.errors.showAllMessages();
不太管用
确认已定义,我已检查
怎么了?
ko。验证将错误
属性添加到可观察对象,而不是模型。您还需要在可观察对象上使用.extend
,以启用验证。您的代码中没有任何内容表明这一点。现在,在我浏览完文档后,我明白了。非常感谢你!我想(因为我的搭档告诉我的),默认情况下我可以这么做。但是现在我如何验证我的字段呢?如何使用showAllMessages()?我不再记得具体细节:)我个人的观点是ko。验证是一个写得很糟糕的插件。计算出的观测值更容易预测。创建验证组解决了我的问题!非常感谢。