我有一个ViewModel,我将其用于ericmbarnard / Knockout-Validation。 在其中我有这个领域:
self.checksum = ko.observable().extend({required: {message: " * Required"}});
在我的HTML中,这个:
<input type="text" id="txtCheckSum" name="txtCheckSum" data-bind="value: checksum"/>
我用javascript代码添加“输入文件”值。在这个javascript代码中,我计算md5文件,然后填写字段txtCheckSum。但不幸的是,这并不会自动填充我的ViewModel。
所以,当我调用检查“viewModel.errors()。length == 0”时,我有一个错误,就像是空的。
帮助?
答案 0 :(得分:1)
正如评论中所提到的,KO的目的是将您的数据与您的观点分开。通过使用jquery选择器更新输入值,您实际上使用KO错误。在极少数情况下需要普通的jquery。
正确的方法是更新observable本身。
vm.checksum("md5 code");
然后你可以一起消除$(“#txtCheckSum”)。val / trigger。
答案 1 :(得分:0)
我找到了解决方案
在Javascript代码中,我把它放在:
$("#txtCheckSum").val('md5 code');
$('#txtCheckSum').trigger('change');
我的viewmodel接受了这些变化。