2013-02-23 30 views
0

我目前正在嘗試使用Knock out View模型發佈到ajax端點。knockout.js - 禁用/啓用表單元素後更新模型

我很苦惱以下場景;

  • 我綁定表單域,一切都很好。

  • 我的應用程序有這樣一個場景,某種形式的領域有自己的readonly屬性設置爲true(使用jquery $("#element).attr("readonly","true");

  • 設置爲只讀模式會從控制系統斷開後(模型項目顯示爲空)。

我試圖在發佈前啓用表單元素,然後在病房後將它們設置爲null,但這是不成功的。

如何保持readonly控件的綁定?

+0

重現此問題的某些代碼將有所幫助。 (PS。爲什麼jQuery設置readonly屬性?對視圖模型做這個更合理嗎([像這樣])(http://jsfiddle.net/jeroenheijmans/RJbTq/)?) – Jeroen 2013-02-23 10:32:42

+1

同意。 [基本示例](http://jsfiddle.net/58vpj/9/)似乎工作正常。 – mjwills 2013-02-23 11:29:05

+0

jQuery正在這樣做,因爲我有一個邏輯組合,而不僅僅是MVVM。我希望有一個'updateBinding'或類似的我可以打電話給該領域? – Doug 2013-02-23 12:37:41

回答

0

這工作正常。我在找錯地方。

問題不在於我Knockout沒有更新模型。問題是我使用jQuery來單獨更新字段,而不是模型。

我做:

$("#fieldName").val("new value"); 
$("#fieldName").attr("readonly","true"); 

這是沒有更新淘汰賽模式。我正在使用該模型提交ajax請求,所以這是一個問題。

通過這樣做,而不是,我沒有問題:

viewModel.fieldName("new value); 
$("#fieldName").attr("readonly","true"); 

感謝大家把我推回使用MVVM我本來應該的方式。