У меня есть сценарий Knockout.Validation, который, я думаю, будет довольно распространенным явлением, но не нашел решения для поиска по сети и различных ответов на этом сайте ,Knockout.Validation не показывает сообщения об ошибках для свойства, загружаемого после первоначальной рендеринга
Свойство, которое я проверяю, не добавляется к нокауту, наблюдаемому до тех пор, пока после вызова ajax. Когда валидация запускается, проверка не выполняется и является ошибкой в моей группе проверки, но сообщение об ошибке не отображается на странице. Я убедился, что все проверки подключены путем добавления проверки на свойство, которое существует, когда происходит первоначальный визуализатор, и сообщение показывает это.
Я знаю, что могу установить значение по умолчанию для свойства, но я бы не ожидал, что вам придется это сделать. Когда я вручную добавляю сообщение проверки с свойством validateMessage databind, он выдает ошибку js, потому что свойство не существует, когда нокаут выполняет свой первый проход через ..... Uncaught TypeError: не удается обработать привязку "validationMessage: function() { return BlogPost(). Заголовок} " Сообщение: Не удается прочитать свойство 'extend' неопределенного.
См. Этот плунж для примера ... http://plnkr.co/edit/OhUw8wP2uNypulbcOIbz?p=preview.
self.Errors = ko.validation.group(this, { deep: true });
self.Count(self.Errors().length);
if (self.Errors().length === 0) {
alert("no errors");
}
else {
self.Errors.showAllMessages();
}
Он использует require js, но это не вызывает никаких проблем, как для стандартного сценария, которое показывает сообщение проверки.
Что мне здесь не хватает, чтобы получить эту работу?
... решение проблемы по вашему решению? –
Решение не найдено. то, что вы предложили выше, не устраняет проблему. ko.validation.group не является наблюдаемым, поэтому, когда установлен параметр BlogPost, проверяемый, группа проверки не обновляется. Возможно, я не объяснил проблему должным образом. Он теперь более заметен в обновленном плунге, поскольку я установил одно из свойств наблюдаемого объекта BlogPost как пустую строку. Поэтому при попытке обновления сообщение об ошибке показывает наблюдаемое с проверкой на верхнем уровне, называемом Test, которое устанавливается на раннем этапе, но не свойство TitlePable для наблюдаемого объекта BlogPost. – JohnG
@BrettGreen +1 из-за иллюстрации "ko.validation.group (это, {deep: true});" Я не знал о глубоком варианте, и это не позволяло мне сообщать об ошибках. Где это документировано? Я не могу найти его в Wiki или в другом месте. –