KO验证:model.errors未定义

时间:2014-03-07 15:29:55

标签: 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 = 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,我检查了。

怎么了?

1 个答案:

答案 0 :(得分:1)

ko.validation向观察者添加errors属性,而不是模型。您还需要在observable上使用.extend来启用验证。