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(false); 也叫。。

任何帮助将不胜感激

谢谢

4

1 回答 1

-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();}" />

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

于 2014-04-16T00:47:24.523 回答