Я не уверен, что это возможно, но у меня есть сценарий, в котором у меня есть система проверки, которая уведомляет мою систему проверки, когда что-то стало действительным/недействительным с помощью зависимого наблюдаемого. Теперь это отлично работает, когда пользователь заполняет форму, так как dependantObservable отключается от изменения базового наблюдаемого значения. (т.е. если свойство Name изменяется, оно будет переоценивать зависимое от наблюдателя значение isValid
, которое, в свою очередь, будет уведомлять мою привязку, которая перехватывает систему проверки).
Теперь моя проблема заключается в том, что если пользователь вообще не касается формы и просто переходит к представлению, это не вызовет привязки, поскольку базовые значения не изменились для каких-либо наблюдаемых, поэтому ни один из подписчиков не узнает о любые изменения валидации происходят. В идеале я не хочу проходить через каждый наблюдаемый и повторно назначать ему свою текущую переменную, чтобы подтолкнуть оценку валидации, что, в свою очередь, вызовет изменение состояния проверки. Так как действительно все, что я хочу сделать, это получить isValid
dependantObservable для обновления из-за отсутствия лучшего слова.
Кажется, это довольно неприятно, но мои варианты, похоже, тоже:
1) Принудительное изменение значения для всех наблюдаемых проверяемых (ужасных)
2) Внесите повторную оценку зависимой функции isValidObservable для запуска абонента (менее ужасного, но все же плохого)
3) Перезапишите библиотеку валидации, чтобы выставить функцию forceValidation()
, которая каким-то образом вызовет все, что нужно переоценить, минуя необходимость того, чтобы базовые наблюдаемые вызывали конвейер проверки.
Любые идеи?