2013-03-06 69 views
0

我們目前正在使用基因敲除2.1開發剃鬚刀應用程序。我們已經開始使用敲除驗證庫。初始加載時的基因敲除驗證激發

問題是在彈出窗口的初始加載時正在觸發ko驗證。我們在這裏錯過了什麼 - 也許是在視圖的初始加載時,淘汰賽認爲視圖模型已經改變並因此觸發驗證?我們如何確定視圖模型上的哪個屬性發生了變化,並且有沒有辦法明確地停止它?

這裏是一個簡化的小提琴顯示問題 - 鏈接:http://jsfiddle.net/3Lqsx/1307/

代碼片段:

var LeaveEditViewModel = function() { 

this.hours = ko.observable().extend({ required: true }); 
this.hours.isModified(false); 
this.registerClick = function() { 

this.hours()   

this.hours.isModified(false); 
}; 

}; 

var leaveEditViewModel = new LeaveEditViewModel(); 

leaveEditViewModel.errors = ko.validation.group(leaveEditViewModel); 
ko.validation.configure({ 
registerExtenders: true, 
messagesOnModified: true, 
insertMessages: false, 
parseInputAttributes: true, 
messageTemplate: null, 
grouping: { 
deep: true 
} 
}); 
ko.applyBindings(leaveEditViewModel); 

我們使用prop.IsModified(假);打電話太..

任何幫助將不勝感激傢伙

感謝

+0

leaveEditViewModel.errors.showAllMessages(false);在初始時以及不顯示消息時隱藏錯誤消息。 – nav0611 2013-03-06 03:36:06

回答

-1

我有同樣的問題,結果發現那是因爲我有被捆綁到淘汰賽點擊綁定在我的視圖模型保存功能我的形式是這樣的:

<input type="button" value="Save" data-bind="click:app.viewModel.save()" /> 

視圖模型保存功能是在我的模型檢測的isValid導致錯誤顯示。這是我想要的,除非以這種方式綁定,否則點擊綁定會在頁面加載時調用該功能。

我包保存功能視圖模型的另一個功能和問題走了:

<input type="button" value="Save" data-bind="click:function(e,i){app.viewModel.save();}" /> 

我不知道這是不是你的確切情況,因爲你沒有張貼所有的代碼,但是,如果不, 我希望這可以幫助別人。

+3

你不需要將它包裝在另一個函數中,只需刪除括號:'data-bind =「click:app.viewModel.save」/>' – 2014-07-10 20:59:18