如果映射插件被调用两次,则Knockout Validation对初始加载不起作用

时间:2012-10-03 14:01:18

标签: knockout.js knockout-mapping-plugin knockout-validation

这一次让我悲伤了一段时间。

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

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

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

现在为真正有趣的部分。在javascript的底部,注释出以下行:

self.loadSupportData();

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

造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:-1)

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

评论专栏:

self.loadData();

并修改最后一行:

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

工作正常。