-1

我有一個ViewModel,我用ericmbarnard/Knockout-Validation。 在這裏面我有這個字段:當我調用「viewModel.errors()。」時,會觸發Fake Errors消息。「

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

您是否將值添加到校驗和observable或txtCheckSum元素? – madcapnmckay

+0

是的。 @ eduardo-chiletto – ECC

回答

1

正如在評論中提到的,KO的要點是將您的數據從視圖中分離出來。通過使用jquery選擇器來更新輸入的值,您基本上使用KO是錯誤的。在極少數情況下,需要簡單的jquery。

正確的方法是更新observable本身。

vm.checksum("md5 code"); 

然後,您可以一起消除$(「#txtCheckSum」)。val/trigger。

0

我找到了解決辦法

在JavaScript代碼中,我把這個:

$("#txtCheckSum").val('md5 code'); 
    $('#txtCheckSum').trigger('change'); 

我的視圖模型接受了變化。

+1

你應該更新checkSum observable。在KO中,如果可能的話,應該消除$(選擇器)的使用,因爲它違反了KO給你的擔憂。 – madcapnmckay

相關問題