2013-03-17 67 views
1

我有一個網格,其中有幾個業務對象。讓我們稱他們爲產品。當你點擊這個項目時,我做了一個AJAX調用並獲取數據並創建一個綁定到模式「窗口」(使用引導程序)的Knockout視圖模型。用戶可以更改產品,例如他們可以將名稱更改爲其他名稱,他們可以取消或保存。當用戶點擊保存/取消時,他們被帶回到網格,然後可以點擊另一個產品,從而彈出一個新產品的模式(另一個AJAX調用來獲取數據等)。ApplyBindings兩次,驗證

那麼我再次調用KO.applyBindings(viewModel)。我想這可能是一個壞主意。我注意到的是,如果用戶沒有輸入名稱(這是必需的),我會得到兩條驗證消息,說「名稱是必需的」。所以這告訴我必須綁定兩個事件(或其他)。所以我做了幾次谷歌搜索,並且我發現了幾篇使用ko.cleanNode(節點)的文章,如果你打算兩次調用applyBindings。這並沒有解決我的問題。我使用knockout.validation.js和我還要name屬性是這樣的:

vm.Name.extend({ 
     required: { message: 'Name is required.' }, 
     minLength: 1 
    }); 

反正是有清除出延長或unApplyBindings?或者我只是使用KO錯誤?我非常喜歡它,但需要一段時間才能做到你想做的事(這就是爲什麼他們付錢給我)。如果需要的話,我也可以讓小提琴演示這個..

+0

感謝您的編輯。我會試圖弄清楚如何讓代碼看起來像那樣。 – Maccurt 2013-03-17 03:11:09

+0

我發現了一個破解來解決這個問題。我不喜歡它,但我需要繼續前進。目前,當我回去編輯另一個對象時,我不再應用綁定,我只是使用從服務器獲得的JSON對象設置viewModel的屬性。我設置了一個標誌來向我表明我已經綁定一次,所以下次我只是跳過綁定,並做viewModel.name(data.name)..不漂亮,但它的工作..我不認爲這回答,我會檢查回來看看如果有更好的方法來做到這一點.. – Maccurt 2013-03-17 03:13:48

回答

0

我知道這是一個老問題,但我遇到了同樣的問題。我開始在github網站上定義一個用於顯示驗證錯誤的自定義模板的示例。當我把它拿出來時,沒有任何變化,我的例外消失了。

我刪除:

<script id="customMessageTemplate" type="text/html"><!-- 
    --><em class="customMessage" data-bind="validationMessage: field"></em> 
</script> 
--- 
<div class="row" data-bind="validationOptions: { messageTemplate: 'customMessageTemplate' }"> 

希望這可以幫助其他人。