1

这件事让我伤心了一段时间。

我有一个使用 Knockout、Knockout Mapping 和 Knockout Validation 的 Web 应用程序。除了这个问题,一切都很顺利。这个Fiddle证明了这个问题。

为了演示这个问题,运行小提琴,然后从列表中选择一些东西。当它出现时,清除名称字段。您可能会或可能不会看到验证消息(它是随机的。在小提琴上,第一次运行时似乎永远不会显示,但在我的实际代码中,有时会出现,有时会在刷新页面时不显示)。

现在单击重新加载按钮并再次执行相同的操作。这次您应该会看到验证错误。

现在是真正有趣的部分。在 javascript 的底部,注释掉下面的行:

self.loadSupportData();

这只是为了防止第二个映射运行。再试一次实验。这次验证将在初始运行时起作用。

这是什么原因造成的?

4

1 回答 1

-1

我认为您的问题是因为您在应用绑定之前加载了数据。

评论行:

self.loadData();

并修改最后几行:

var viewModel = new PersonAttributeListViewModel();
ko.applyBindings(viewModel);
viewModel.loadData();

它工作正常。

于 2012-10-05T09:55:07.780 回答