如何验证数组?

2023-11-21

我正在尝试使用敲除验证库验证对象数组。对我来说,如何为一组可观察值形成验证组并不简单。我设法让它发挥作用的唯一方法是这样的(包含 JSFIDLE):

var Note = function () {
    var self = this;
    self.name = ko.observable().extend({ required: true });
};

var viewModel = function() {
    var self = this;

    self.notes = ko.observableArray([new Note(), new Note()]);

    self.validatedObservables = function() {
        var arr = [];
        ko.utils.arrayForEach(self.notes(), function(note) {
            arr.push(note.name);
        });
        return arr;
    };

    self.errors = ko.validation.group(self.validatedObservables());

    self.submit = function () {
        if (self.errors().length != 0) {
            self.errors.showAllMessages();
        }
    };

};

ko.applyBindings(new viewModel());

看来我的方法不必要地冗长。根据源代码,您可以简单地将可观察量传递给 ko.validation.group:

self.errors = ko.validation.group(self.notes());

但这行不通。


有一个配置选项可以使分组深度(递归)。 它可以通过全局设置ko.validation.init( { grouping: { deep: true } } )或在group调用自身,例如:self.errors = ko.validation.group( self.notes(), {deep: true} );

在这里更新了小提琴:http://jsfiddle.net/KHFn8/4116/

顺便说一句,你这样做的方式可以写成更短的形式:

self.errors = ko.validation.group(
    ko.utils.arrayMap(self.notes(), function(note) { return note.name }));

Edit: 我的小提琴不再适用于最新版本的 KO 验证。这是我给出答案时使用最新版本的相同小提琴(2012 年 6 月):http://jsfiddle.net/KHFn8/4117/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何验证数组? 的相关文章

  • Knockout:避免绑定中的循环更新

    我有一个与接口交互的自定义 绑定Scribe https github com guardian scribe 一个内容可编辑的所见即所得编辑器 当编辑器内容发生变化时 它会更新关联的可观察量 并在关联的可观察量发生变化时更新编辑器 ko
  • 敲除验证

    我有一个 asp net mvc3 项目 我在其中使用淘汰赛绑定对表进行批量编辑 我想在保存数据时进行必需验证和数字验证等验证 有没有更简单的方法来进行淘汰验证 PS 我没有使用表格 看一下敲除验证 https github com eri
  • KnockoutJS 中的最大值和数值验证

    如何实现最大值验证并检查可观察值是否为数字 例如 self MyInteger ko observable extend numeric 2 extend maxValue params 255 message MyInteger cann
  • Knockout.js - 数据绑定文本默认值

    在 knockout js 中 我有一个非常标准的字段 如下所示
  • 淘汰赛:自定义绑定处理程序上的 valueAccessor 与 viewModel?

    通过绑定属性 通过 valueAccessor 访问视图模型的值与从传递给处理程序的 init 和 update 的 viewModel 参数获取它们之间有什么区别 我一直认为答案是那些链接到 valueAccessor 的模型属性会自动设
  • Knockoutjs foreach 自定义绑定处理程序与 afterAdd

    我想构建一个自定义的绑定处理程序 ko bindingHandlers foreachWithHighlight 在afterAdd时具有高亮效果 来自文档 http knockoutjs com documentation foreach
  • WebDriver:更改事件未触发

    我有一个使用 KnockoutJS 的应用程序 我正在尝试编写一些测试表单的测试 如果您不了解 KnockoutJS 简单来说 它提供了从我的视图到我的数据模型的绑定 这意味着当我在输入字段中键入值时 我的基础对象会自动使用该输入字段值进行
  • 输入按键的淘汰赛事件绑定会导致奇怪的行为

    长话短说 我希望用户能够在输入元素上按 Enter 键 并调用我的视图模型中的某些方法 这是我的 html 输入
  • knockoutjs 在 foreach 绑定中单击绑定

    编辑 问题与绑定无关 而是与一个简单的 JavaScript 错误有关 我有一个关于 foreach 绑定中的单击绑定的问题 我有一个列表 其中的项目显示一个下拉框 用于从主数据中选择一个值 可以在该列表中添加和删除项目 用于删除项目的按钮
  • Knockout JS 中的多个扩展器不起作用

    刚刚在KO中找到了出路 所以请温柔一点 每个扩展器单独工作 但是当我链接它们时 第一个 重置 不会触发 JavaScript ko extenders reset function target var initialValue targe
  • Breeze.js 查询不更新淘汰赛视图

    我正在通过 Breeze js 查询数据 第一次运行良好 第二次视图未更新 html a Order by Newest a a Order by Score a div ul li strong span span strong span
  • 用于创建类似于 StackOverflow 的分页 UI/链接的淘汰赛模板

    我有一个用于某些分页 UI 的功能 Knockout 模板 可与基于 Knockout 的共享数据网格配合使用 该模板为网格中的每个数据 页面 呈现一个 HREF 该模板可以工作 但它很笨重 因为如果我获取大量数据 那么我最终会在网格下方出
  • 为什么 afterRender 从未被调用?

    看一下下面的 HTML 示例 这是一个简单的KOforeach绑定和一个将新项目添加到的按钮observableArray 添加工作正常并且新项目出现 但是 那afterRender方法永远不会被调用 不会在初始绑定之后 也不会在添加 和呈
  • Knockout.js ViewModel 更改回调?

    我正在尝试在 Knockout js 应用程序中实现自动保存功能 有没有办法在 ViewModel 发生变化时分配回调 看看 Ryan Niemeyer 的聪明但肮脏的旗帜 http www knockmeout net 2011 05 c
  • jQueryUI 可排序列表与 Knockout 相结合 - 嵌套可排序列表

    我是 Knockout 的新手 几天 正在尝试重新设计一个包含嵌套可排序列表的页面以使用它 我在这里找到了使用可排序列表和 Knockout 的一个很好的答案 jQuery UI Sortable 的 Knockout 自定义绑定 奇怪的行
  • ko.applyBindings 上是否有某种回调可用?

    Using 淘汰赛 js questions tagged knockout js在我们当前的项目中 我们已经多次遇到过这一点 我怎样才能确保某些 Javascript 代码只被执行after页面上的所有绑定均已通过 Knockout 应用
  • Knockout 如何将对象绑定到复选框和单选框

    参考here http jsfiddle net SimonYong kf6U8 2 如何将对象 没有可观察的 绑定到复选框和单选值中 以便我得到的值 值和值 是一个普通对象 没有可观察的 HTML Selection List a cla
  • 在淘汰赛应用程序中使用 setInterval 进行轮询实现?

    我正在尝试使用 setInterval 实现简单的轮询机制 我有一个视图模型如下 define knockout jquery function ko function ViewModel var self this setInterval
  • 为什么我的淘汰单选按钮在另一个具有点击绑定的元素内时会失败?

    我有一个单选按钮列表 我想要点击 li 他们还检查单选按钮 这一切都有效 直到我放了一个name单选元素上的属性 然后我的代码停止工作 我的代码如下所示 ul li li ul li
  • 删除克隆元素上的淘汰赛 js 绑定

    我正在使用 knockout js 模板绑定功能将项目集合渲染到元素

随机推荐