2013-04-26 3 views
1

У меня есть поле сообщения и коллекция people, которые связаны в неупорядоченном списке, сопровождаемом выпадающим списком цветов и выбором по умолчанию.Подтвердить наблюдаемые в коллекции с помощью проверки нокаута

Проверка в поле сообщения работает, стирает текст и отображается ошибка, и счетчик ошибок увеличивается. Однако, когда вы меняете одну из выпадающих записей на «Выбрать ..» (фактически не выбирая параметр), вы получаете сообщение «это поле обязательно», однако объект errors не обновляется. Очевидно, это связано с тем, что это коллекция? Посмотрите, что я имею в виду, когда вы нажимаете кнопку отправки или просматриваете привязку данных диапазона.

Мне также нужна проверка, чтобы использовать динамически добавленные строки, поэтому, когда вы нажимаете «добавить другую строку», мне тоже нужен объект ошибок.

http://jsfiddle.net/goneale/TJGS3/

Может занять кто-нибудь взглянуть на это и помочь мне вообще?

ответ

1

Обновление: С последней версией библиотеки проверки вы можете использовать живой: истинный вариант, чтобы получить его, чтобы слушать observableArrays

grouping: { deep: true, observable: true, live: true } 

http://jsfiddle.net/fYrbt/29/

Старый ответ:

К сожалению, группа не переоценивается при вставке нового элемента. Подпишитесь на массив и сделайте это явным.

this.items.subscribe(function() { 
    this.errors = ko.validation.group(this); 
    this.errors.showAllMessages(); 
}, this); 

http://jsfiddle.net/fYrbt/

+1

На самом деле, добавив следующую строку только 'ko.validation.init ({группировки: {глубоко: истинно}});' полностью фиксирует все мои проблемы и действительно позволяют новые элементы для перепроверены. Если я использую «наблюдаемую: истинную» часть, которую вы также указали, это не так. Я дам вам точку :) – GONeale

+0

@Anders Как заставить группу переоценить, когда каждый элемент в группе изменяется, без повторной инициализации при каждом изменении элемента массива? Спасибо! –

+0

См. Обновление – Anders