敲除验证初始加载时触发

时间:2013-03-06 01:55:11

标签: knockout.js knockout-validation

我们目前正在使用knockout 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(false);打电话......

任何帮助都将受到赞赏

由于

1 个答案:

答案 0 :(得分:-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();}" />

我不知道这是不是你确切的情况,因为你没有发布所有的代码,但如果没有,我希望这有助于某人。