这件事让我伤心了一段时间。
我有一个使用 Knockout、Knockout Mapping 和 Knockout Validation 的 Web 应用程序。除了这个问题,一切都很顺利。这个Fiddle证明了这个问题。
为了演示这个问题,运行小提琴,然后从列表中选择一些东西。当它出现时,清除名称字段。您可能会或可能不会看到验证消息(它是随机的。在小提琴上,第一次运行时似乎永远不会显示,但在我的实际代码中,有时会出现,有时会在刷新页面时不显示)。
现在单击重新加载按钮并再次执行相同的操作。这次您应该会看到验证错误。
现在是真正有趣的部分。在 javascript 的底部,注释掉下面的行:
self.loadSupportData();
这只是为了防止第二个映射运行。再试一次实验。这次验证将在初始运行时起作用。
这是什么原因造成的?