ko.validation.group 没有检测到我的嵌套 observableArray 上的错误

2023-12-30

我使用 Durandal/Breeze 开发了一个使用密集型 Knockout 绑定的项目。

我有一个使用以下可观察的视图:

packing
  - description
  - weight
  - ...
  - isotopes
    - name
    - activity
    - ...

正如你在上面看到的:我的packing可观察包含一个isotopes里面有 observableArray。这packing对象从微风中充满了查询。

var query = entityQuery.from('Packings')
        .where('id', '==', packingId)
        .expand('isotopes');

我尝试使用以下方法为所有这些设置验证ko.验证.

  • The description我的财产packing需要可观察的

  • The name我的财产isotopesobservableArray 是必需的

我成功验证了描述。因此,每当用户清除绑定到的输入字段时description,这一项以红色突出显示。每当用户添加一个新的空实体(微风)并单击“保存”时,该实体就会以红色突出显示。

这要归功于保存按钮中的这段代码:

var validationErrorsCount = ko.computed(function () {
    if (typeof packing() == 'undefined') return;
    var validationErrors = ko.validation.group(packing());
    return validationErrors().length;
})

if (validationErrorsCount() > 0) {
    logError('Validation failed, please check.', '', true);
    ko.validation.group(packing()).showAllMessages();
    return;
}

到目前为止,一切都很好。

现在我需要验证该属性name for my isotopes可观察数组。因此,每当用户清除绑定到的输入字段时name,这一项以红色突出显示。有用。但问题是每当用户添加一个新的空实体(微风)类型isotope,不要输入任何内容name输入框,点击保存,这个不是红色高亮的。

当我调试和检查值时,我可以清楚地看到:

  • ko.validation.group(packing(), {deep:false});没有返回任何无效的东西

  • ko.validation.group(packing().isotopes(), {deep:false});没有返回任何无效的东西

所以看来 ko.validation 没有检测到我的无效输入。

我的问题:如何验证我的嵌套isotopesobservableArray 当我在其中添加新元素时?

Thanks.


UPDATE

这是另一个有问题的帖子:Breeze.js 和 Knockout.js:将微风验证转换为淘汰验证会导致“堆栈空间不足”或“递归过多” https://stackoverflow.com/questions/16158463/breeze-js-knockout-js-translating-breeze-validation-to-knockout-validation-ca

这是我的“脏”和临时黑客(从第 4 行到第 9 行)

// Check errors on the packing entity
var validationErrorsCount = ko.validation.group(packing()).length;
// Check errors on the isotopes entities !! code below is a temporary hack 
ko.utils.arrayForEach(packing().isotopes(), function (isotope) {
    if (!isotope.name.isValid()) {
        validationErrorsCount = validationErrorsCount + 1;
        ko.validation.group(isotope).showAllMessages();
    }
});

if (validationErrorsCount > 0) {
    logError('Validation failed, please check.', '', true);
    ko.validation.group(packing()).showAllMessages();
    return;
}

仍在等待更好的方法来验证我的内部(嵌套)模型。


我认为没有简单的方法。在一定程度的复杂性下,迁移到“ItemViewModel”会更容易。 ItemViewModel 是围绕内部实体的面向视图的包装器。它公开了精心控制的属性,旨在更轻松地绑定。我描述了这里的方法 https://stackoverflow.com/questions/16180592/sorting-breeze-navigation-properties与另一个问题有关。

我不知道你是否碰过那堵墙。

另一个想法: 写几个自定义验证 http://www.breezejs.com/documentation/validation对于这个 EntityType 来说,它负责检查同位素的艰苦工作。您将知道如何在验证方法中“正确”且高效地完成工作;您不会依赖 KO 来遍历图形或遭受循环问题。

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

ko.validation.group 没有检测到我的嵌套 observableArray 上的错误 的相关文章

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

    我有一个与接口交互的自定义 绑定Scribe https github com guardian scribe 一个内容可编辑的所见即所得编辑器 当编辑器内容发生变化时 它会更新关联的可观察量 并在关联的可观察量发生变化时更新编辑器 ko
  • Edge 中的 Javascript 仅适用于打开的 devtools

    我遇到的问题是 在 MS Edge 中 我的图像映射功能只能部分工作 它由淘汰赛 FW 提供动力 在更大的图像映射上 它不会将整个图像映射注册到视图模型中 因此 图像映射的所有悬停效果和单击样式都会停止工作 然而 这只是大图像地图的问题 还
  • 如何在服务器中处理用于发布目的的日期

    我从 ASP NET MVC 获得了这个值 Date 1446393600000 它在 SQL 数据库中的值是 2015 11 02 这是一个date 仅限日期 并将其作为 javascript 对象进行操作 我使用moment js ht
  • 如何使用 URL 将数据从 javascript 发送到 ASP.NET MVC 控制器

    我需要一些帮助 我使用 ASP NET MVC4 以及 JavaScript 和 Knockout 编写了一个小应用程序 但我无法将数据从 javascript 发送到 MVC 控制器 反之亦然 例如JS部分是这样的 JavaScript
  • 对模板之一的 observableArray 进行排序

    我有以下视图模型 function instance id FirstName extend this id ko observable id FirstName ko observable FirstName 我在 observableA
  • knockoutjs通过点击事件获取元素id

    我正在使用 knockoutjs 目前我认为有些东西看起来像这样 img src images image1 png 这允许我获取视图模型中的元素 ID pressedTab function tab console log Element
  • 淘汰 foreach 不会清除新虚拟机上的先前条目

    我有一个模态形式 其中有两个绑定到可观察数组的嵌套列表 每次我单击按钮打开模式时 这两个嵌套列表都不会清除它们以前的数据 即使我为整个事物生成了一个全新的视图模型 我最终在这两个列表中得到了重复的 和三次的 等等 项目 如何确保当我给这个东
  • Knockout.js 安全绑定

    我想使用带有淘汰赛的安全绑定 为此我使用敲除安全绑定 js https github com brianmhunt knockout secure binding 谁能解释一下为什么下面的代码不起作用 它会抛出一个错误 未捕获 淘汰 安全
  • knockout valueUpdate 无法与 Pagedown 一起使用?

    我的看法有以下几点
  • 如何在Durandal路由器中使用splat参数?

    我正在看的文章是杜兰达尔路由器 http durandaljs com documentation Router html Under mapAuto 它说我们可以在 url 中传递 splat 参数 customers 1 和activa
  • 如何使breezejs所需的验证器允许空字符串

    在breezejs中允许所需属性中存在空字符串的首选方式是什么 I found 这个答案 https stackoverflow com questions 19658297 how does breeze saves empty stri
  • Knockout JS 中的多个扩展器不起作用

    刚刚在KO中找到了出路 所以请温柔一点 每个扩展器单独工作 但是当我链接它们时 第一个 重置 不会触发 JavaScript ko extenders reset function target var initialValue targe
  • 有没有办法一次性禁用一堆表单元素?

    我想根据某些条件禁用 HTML 表单元素的一部分 这似乎是执行此操作的理想方法 fieldset fieldset
  • Breejs:日期未设置为正确的时间

    我注意到 如果从服务器返回的日期属性的值为 2013 07 11T17 11 04 700 则微风会将值更改为 Thu Jul 11 19 11 04 UTC 0200 2013 请注意 现在时间提前了 2 小时 我在保存实体时已经遇到了这
  • 使用 Durandal 的单个网页应用程序的全局变量

    我的应用程序具有三个 全局 内容 带有 lat 和 lng 值的用户位置 用户是否登录 以及他们选择的活动 将其视为一个类别 我希望在整个应用程序中使用这些值 每个屏幕都会使用该日期的某些集合 因此每页加载它并不是正确的答案 除非用户创建事
  • 淘汰赛,内容可编辑(和降价)

    使用由 markdown 字符串支持的 Knockout 绑定处理程序并进行渲染 使用 markdown js 和内置的 html 绑定处理程序 工作正常 但尝试添加内容可编辑行为 并且在可观察值未在模糊时更新或仅使用删除了所有降价格式的文
  • 将 MVVM 与 Knockout.js 结合使用时在服务器端定义模型

    我计划在客户端使用 knockout js 和 MVVM 模式来构建单页应用程序 因此模型 视图模型将在客户端定义 我对如何在服务器端构建感到困惑 现在 控制器会返回域模型本身吗 从域模型到 ViewModel 的所有映射仅发生在客户端吗
  • 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

随机推荐

  • MVC3起始页

    我正在 Visual Studio 2010 中开发一个 Web 应用程序 它的 mvc3 我试图弄清楚如何发布它 并通过各种说明我尝试将视图 主页 索引设置为起始页 这是一个坏主意 现在没有任何效果 即使尝试像我一样查看该站点 使用 F5
  • 单元测试时如何将控制器注入指令中

    我想测试这样声明的 AngularJS 指令 app directive myCustomer function return template cust html controller customerController 在测试中 我想
  • Junit @BeforeClass 和 @AfterClass 在多个测试用例的情况下的行为

    Folks 假设我有一个定期运行的复杂的子类测试套件 作为其中的一部分 我试图确保每个测试类严格地一个接一个地执行 并且Test2 s BeforeClass方法之前不会启动Test1 s AfterClass已经完成了 这是一个有效的假设
  • 在 Windows 窗体中运行 WCF

    我有一个程序作为客户端和服务器工作 我将 wcf 服务与 BasicHttpBinding 结合使用 并且该程序在控制台应用程序中运行 当我将代码移至 Windows 窗体应用程序时 一切都停止工作 当客户端调用一个操作时 它不会返回 当调
  • 原子函数真的会让 CUDA 中的变量变得不稳定吗?

    我写了一个非常简单的代码 要求线程 0 更新全局变量 而其他线程继续读取该变量 但我发现其他线程并没有真正获取该值 代码在这里 很简单 谁能给我任何建议如何解决它 多谢 global void addKernel int c int i t
  • 将 .ui 文件转换为 .py 文件时出错

    我在 Qt4 Designer 中创建了 notepad ui 文件 并尝试通过命令创建 notepadwindow py 文件 pyuic4 bat notepad ui o notepadwindow py 结果我得到了以下错误 Tra
  • Servlet 上的全局变量。是对所有会话全局的,还是仅对当前会话全局的? [复制]

    这个问题在这里已经有答案了 我需要在应用程序运行时共享信息 如果我有 public class example extends HttpServlet Object globalObject doGet doPost 用户通过服务器和对象全
  • 无法将 float 转换为 int if 对象

    这段代码运行良好 float ff 5 5f int fd int ff Console Write fd 哪里有这个代码没有 float ff 5 5f object jf ff int fd int jf Console Write f
  • 使用 PyGObject 中的 GtkSourceView 从 Glade 加载 GUI

    我正在尝试使用 PyGObject 中具有 GtkSourceView 小部件的 Glade 文件 我写了一个关于如何开始在 Glade 中使用新的 GtkSourceView 3 0 的小指南 http cjenkins wordpres
  • 使用java更新ArrayList/HashMap中的元素

    我正在为大学做一些课程 我真的应该知道这一点 但我不确定如何更新存储在 HashMap 中的对象 我有一个抽象的 用户 类 它扩展到 客户 和 员工 类 其实例存储在名为 mapUsers 的 HashMap 中 我认为可以完成的方法是将要
  • DynamoDB 物化图模式示例

    我开始研究 DynamoDB 但在阅读有关物化图模式的部分时遇到了困难 管理多对多关系的最佳实践 https docs aws amazon com amazondynamodb latest developerguide bp adjac
  • 聚合函数上的 iOS FetchRequest:如何包含挂起的更改?

    我终于至少缩小了这个问题的范围 我正在计算支出的一些聚合函数 如本例中的总和 如果我更改一些支出 此聚合提取不会立即刷新 而是在一段时间后刷新 可能是在更改保存到数据库之后 我在文档中找到了这部分 void setIncludesPendi
  • 迭代器的类型:输出、输入、正向、随机访问迭代器

    C STL 中有多少种类型的迭代器 到目前为止 我所知道的有这些 输出迭代器 输入迭代器 前向迭代器 随机访问迭代器 还有更多吗 它们之间有什么区别 各自的局限性和特点是什么 什么时候使用哪种类型 如果可以的话 找到并阅读 C 标准库 教程
  • 带有 x86 映像的 Android 2.3.3 模拟器无法通过“使用主机 GPU”运行

    我注意到 如果我在使用 Android 2 3 3 和 Intel x86 系统映像创建新的虚拟设备时选中 使用主机 GPU 复选框 模拟器将无法运行 它会显示黑屏 没有任何生命迹象 除了logcat 中的错误 根据我在网上找到的一些信息
  • 远程服务如何向绑定的活动发送消息?

    我读过有关绑定服务的文档 http developer android com guide topics fundamentals bound services html 其中表明您可以通过以下方式轻松沟通Messages从活动到远程 即不
  • Windows 7 无法创建 SSL/TLS 安全通道。"} System.Net.WebException

    我正在运行 Windows 7 64 位专业版并尝试编写 RSS Feed 阅读器这是错误消息 exception 请求已中止 无法创建 SSL TLS 安全通道 System Net WebException我被告知此错误不会发生在 Wi
  • 作业的 Kubernetes 状态条件列表?

    是否有任何资源可以概述 kubernetes 作业可能具有的所有可能的状态条件 我想知道 因为我想检查 当我运行一个作业时 它是否已经在运行 如果是 则退出新作业 我碰到until kubectl get jobs myjob o json
  • android:通过触摸移动移动视图(ACTION_MOVE)

    我想做一个简单的控件 一个内部有视图的容器 如果我触摸容器并移动手指 我想移动视图以跟随我的手指 我应该使用什么样的容器 布局 这个怎么做 我不需要使用表面 而是使用简单的布局 我找到了一种使用 ViewPropertyAnimator 实
  • 如何在 Visual Studio Code 中进行 git Push?

    有一个 推送 菜单项 但是当我单击它时 除了出现一个微妙的进度条并且从未完成之外 什么也没有发生 从 Visual Studio Code 的文档页面中 我发现了这一行 VSCode 目前不处理凭据管理 并且该页面链接到凭据助手上的 Git
  • ko.validation.group 没有检测到我的嵌套 observableArray 上的错误

    我使用 Durandal Breeze 开发了一个使用密集型 Knockout 绑定的项目 我有一个使用以下可观察的视图 packing description weight isotopes name activity 正如你在上面看到的