gpt4 book ai didi

knockout.js - knockout validation 未清除错误模板

转载 作者:行者123 更新时间:2023-12-02 01:49:59 26 4
gpt4 key购买 nike

我在使用 knockout.validation 时遇到了一些问题。我目前有一个看起来有点像这样的用户界面:

enter image description here

我遇到的问题是图标似乎没有消失,即使没有viewModel.errors().length 报告的错误也是如此。 ,但是文本确实如此。

enter image description here

我为我的错误使用自定义模板,在 JavaScript 中定义如下:

   // Setup knockout-validation
ko.validation.rules.pattern.message = 'Invalid.';
ko.validation.configure({
registerExtenders: true,
messagesOnModified: false,
insertMessages: true,
parseInputAttributes: true,
messageTemplate: 'errorMessage'
});

/// extend objects
viewModel.errors = ko.validation.group(viewModel);

我的错误模板是这样的:

<!--This is the template for an error message that will be used by ko.validation - it should display an icon followed by the error message-->
<script id="errorMessage" type="text/html">
<div class="validationMessage">
<i class="fa fa-exclamation-triangle"></i><em class="customMessage" data-bind='validationMessage: field'></em>
</div>
</script>

我实际上刚刚从 <i> 的数据绑定(bind)中移除其中有 data-bind="visible: field"因为这似乎没有正常工作。我也不完全确定在哪里 field来自 - 它可能是我忘记的 ko.validation 属性。这意味着即使没有错误,图标仍然显示,但是当字段为空时阻止图标显示,所以我有一个 "This field is required"没有图标的消息。

扩展到我的可观察对象的验证对象如下所示:

validation : { required: true, number: true }

执行期间查看我的 viewModel:

enter image description here

任何人都可以建议我可能做错了什么以防止这些图标消失吗?我可以使用 jQuery 手动删除它们,但我在没有完全理解问题的情况下犹豫是否这样做。

最佳答案

实际上,我已经通过偶然发现的 fiddle 找到了解决方案。我取出的 data-bind="visible: field" 位是最重要的方面。似乎 field 是上下文中的 knockout 验证项(这就是为什么我无法弄清楚它的来源)。

但是直接绑定(bind)到 field 是错误的,这只是绑定(bind)到字段的值,这解释了为什么它总是存在,除非你提供一个空值。然而,Knockout 验证扩展了该对象以包含一些附加功能。具体来说,field.isValid() 是重要的调用,可以用在绑定(bind)中。

data-bind="visible: field.isValid()"

关于knockout.js - knockout validation 未清除错误模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23432737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com