这一次让我悲伤了一段时间。
我有一个使用Knockout,Knockout Mapping和Knockout Validation的Web应用程序。除了这个问题,一切都很顺利。这个Fiddle证明了这个问题。
要演示此问题,请运行小提琴,然后从列表中选择一些内容。出现后,清除名称字段。您可能会或可能不会看到验证消息(它是随机的。在第一次运行时似乎永远不会显示,但在我的实际代码中,它有时会在刷新页面时有时也不会显示。)
现在点击重新加载按钮并再次执行相同的操作。这次你应该看到验证错误。
现在为真正有趣的部分。在javascript的底部,注释出以下行:
self.loadSupportData();
这只是为了防止第二个映射运行。再试一次实验。这次验证将在初始运行时起作用。
造成这种情况的原因是什么?
答案 0 :(得分:-1)
我认为您的问题是因为您在应用绑定之前加载了数据。
评论专栏:
self.loadData();
并修改最后一行:
var viewModel = new PersonAttributeListViewModel();
ko.applyBindings(viewModel);
viewModel.loadData();
工作正常。