我们目前正在使用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);打电话......
任何帮助都将受到赞赏
由于
答案 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();}" />
我不知道这是不是你确切的情况,因为你没有发布所有的代码,但如果没有,我希望这有助于某人。