gpt4 book ai didi

javascript - 数据加载时 knockout 验证停止计算错误

转载 作者:行者123 更新时间:2023-12-02 15:44:19 24 4
gpt4 key购买 nike

我正在研究表单,我使用knockout + knockout.validation框架。现在我陷入了验证,因为它没有按预期工作。我创建了简单的 fiddle 来向您展示我的问题。

我的 viewModel 是具有可观察字段和带有验证的 .extend 方法的复杂对象。验证本身效果很好,但错误计数却效果不佳。

总的来说,如果我在启动时将数据分配给我的 viewModel,如下所示:

self.someObject = ko.observable(new SomeObject({
id: "123",
name: {
en: "Initial data"
}
}));

一切正常,但是对accal数据的调用是对WebApi的asnyc调用。因此,从服务器返回时,原始对象 (viewModel.someObject) 会被替换。问题是,一旦对象被替换,viewModel.errors(验证组)就会停止跟踪错误。

您可以在 JsFiddle example 中查看完整的工作示例。也许我忽略了 JS 中的一些重要内容(我更喜欢 C#)。

这是一个大问题,因为现在我无法停止保存数据,因为我不知道是否有任何错误。

谢谢!

最佳答案

错误计数未按预期工作的问题在于您的 self.callForData 函数中。

通过做

self.someObject(new SomeObject({
id: "123",
name: {
en: "LoadedName"
}
}));

您实际上正在用"new"对象实例替换 someObject observable,因此旧对象验证将不再被引用。

您需要一种方法来使用新数据值重置当前的“someObject”。我已经更新了 fiddle ,向您展示一种实现方法。基本上,您在对象中引入了“重置”类型的函数,该函数重置对象的当前状态而不创建新实例。示例:https://jsfiddle.net/newuserjs/ww2r6wet/

关于javascript - 数据加载时 knockout 验证停止计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32332362/

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