Сжигание с проверкой выбивки при начальной нагрузке

В настоящее время мы работаем над приложением для бритвы с использованием knockout 2.1. Мы начали использовать библиотеку проверки нокаутов.

Проблема в том, что проверки ko запускаются при начальной загрузке всплывающего окна. Что нам здесь не хватает - возможно, при начальной загрузке представления knockout считает, что модель представления изменилась, и поэтому запускает проверки? Как мы можем определить, какое свойство модели представления было изменено, и есть ли способ остановить это явным образом?

Вот упрощенная скрипка, чтобы показать проблему - Ссылка: 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); звони тоже ..

Любая помощь будет оценена, ребята

Спасибо


person Jatin Dua    schedule 06.03.2013    source источник
comment
leaveEditViewModel.errors.showAllMessages (ложь); чтобы скрыть сообщения об ошибках вначале и когда вы не знаете, что показывать сообщения.   -  person NaveenKumar1410    schedule 06.03.2013


Ответы (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();}" />

Я не знаю, является ли это вашей точной ситуацией, поскольку вы не опубликовали весь код, но, если нет, я надеюсь, что это кому-то поможет.

person Jason Bowers    schedule 16.04.2014
comment
Вам не нужно заключать его в другую функцию, просто снимите круглые скобки: data-bind="click:app.viewModel.save" /> - person Cᴏʀʏ; 11.07.2014