ValidationMessage抛出observable是无法验证的

时间:2014-07-07 09:50:34

标签: knockout.js knockout-validation

我有一个viewmodel并且它有一个可观察的,并且我在其上应用了一些验证。

现在,当我使用自定义validationMessage绑定时,为了显示错误,我在ko验证库中收到以下错误:

<script type="text/html" id="TEXTBOX_Template">
    <input type="text" data-bind="value: question().s_answer" />
    <span class="validationMessage" 
          data-bind="validationMessage: question().s_answer"></span>
</script>

KO validationMessage error

我正在使用ko和ko-validation的最新版本。

我的设置如下:

ko.validation.init({ decorateInputElement: false, 
                     messageTemplate: 'error_Template' });
ko.validation.makeBindingHandlerValidatable("selectedOptions");

错误模板(但在此示例中不需要,因为我想使用validationMessage):

<script type="text/html" id="error_Template">
    <!-- ko if: (field.isModified() && !field.isValid()) -->
    <span class="validationMessage" data-bind="text: field.error"></span>
    <!-- /ko -->
</script>

如果这适用于observable,那么它应该与observableArray一起使用,因为我有一个使用ko foreach的单选按钮列表,当有验证时,错误会显示在每个输入单选按钮之后。

任何建议都会有所帮助!

由于

1 个答案:

答案 0 :(得分:5)

validationMessage绑定存在一些问题,因此我们需要将observable显式扩展为可验证的。

在validationMessage绑定处理程序下的knockout.validation.js文件中添加以下行:

obsv.extend({ validatable: true });

enter image description here

希望这将在下一版本中修复,在ko.validation中添加了一个问题。或者至少这对我有用,如果我错了,请告诉我?或者有更好的方法吗?