【问题标题】:ValidationMessage throwing observable is not validatableValidationMessage 抛出 observable 不可验证
【发布时间】:2014-08-27 18:20:42
【问题描述】:

我有一个 viewmodel,它有一个 observable,我在上面应用了一些验证。

现在,当我使用自定义 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 和 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 的单选按钮列表,并且在验证时,每个输入单选按钮后都会显示错误。

任何建议都会有所帮助!

谢谢

【问题讨论】:

  • 我不明白你给的jsFiddle。它似乎与您的问题没有任何共同之处(没有模板,没有输入标签......)。我们需要更多信息,例如您的视图模型
  • 感谢您清理位。对 jsFiddle 感到抱歉,它只是为了玩耍。验证在 jsFiddle 中可以正常工作,但在我的代码中却不行。我现在已经删除了。所以问题出现在输入和选择控件中。

标签: knockout.js knockout-validation


【解决方案1】:

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

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

obsv.extend({ validatable: true });

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 2020-02-03
    相关资源
    最近更新 更多