KnockoutJS-Validation:未应用初始化

时间:2014-03-18 13:33:21

标签: javascript knockout.js knockout-validation

我使用敲除验证插件。但是当我初始化自定义选项时:

viewModel{
    model:{
       id: ko.observable(''),
       title: ko.observable('').extend({required: {message: mymessage}})
    },
    testFunc: function(){
        ....
    }
}

...

ko.applyBindings(this.viewModel, document.getElementById('mainView'));

ko.validation.configure({
       errorMessageClass: 'error-message',
       errorElementClass: 'error',
       decorateInputElement: true
});

this.viewModel.model.errors = ko.validation.group(this.viewModel.model);

它们没有被应用。如果验证模型并显示错误 - 在没有我的课程error-message的情况下获取默认插件消息并且输入不是用error类修饰的。

但是当我将它们添加到标记时它们被应用:

<div id="mainView">

   <table data-bind="with: model">     

      <tbody data-bind="validationOptions {errorMessageClass: 'error-message',
          errorElementClass: 'error',
          decorateInputElement: true}">

          ...  
          <td>
               <input data-bind="value: title" type="text">
          </td> 
          ...

      </tbody>

   </table>

</div>

1 个答案:

答案 0 :(得分:1)

为了验证插件提供了一些功能并正确应用了您的设置,您需要在应用任何绑定之前配置验证插件,以便之前调用ko.applyBindings

所以你只需要改变这些行的顺序:

ko.validation.configure({
       errorMessageClass: 'error-message',
       errorElementClass: 'error',
       decorateInputElement: true
});

ko.applyBindings(this.viewModel, document.getElementById('mainView'));