Nie jestem pewien, czy jest to możliwe, ale mam scenariusz, gdzie mam system weryfikacji, który powiadamia mój system sprawdzania poprawności, gdy coś stało się ważne/nieważne poprzez zależną obserwowalne. Teraz działa to świetnie, gdy użytkownik wypełnia formularz, ponieważ dependantObservable jest wyłączany z powodu zmiany wartości obserwowanych obiektów. (tj. jeśli właściwość Name ulegnie zmianie, to ponownie przeanalizuje zależną obserwowalność isValid
, która z kolei powiadomi moje powiązanie, które zostanie podłączone do systemu walidacji).Ręcznie dostać nokaut, aby ponownie ocenić dependantObservable
Moim problemem jest to, że jeśli użytkownik w ogóle nie dotknie formularza i po prostu przejdzie od razu do zgłoszenia, nie wywoła to wiązania, ponieważ wartości bazowe nie uległy zmianie w przypadku obserwowalnych elementów, więc żaden subskrybent nie będzie wiedział o wszelkich zmianach walidacyjnych. Idealnie nie chcę przechodzić przez każdą obserwowalną i ponownie przypisać jej bieżącej zmiennej, aby popchnąć ocenę sprawdzania poprawności, która z kolei wywoła zmianę stanu sprawdzania poprawności. Więc tak naprawdę wszystko, co chcę zrobić, to uzyskać isValid
dependantObservable na odświeżenie z braku lepszego słowa.
Wydaje się dość paskudny tak czy inaczej, ale moje opcje wydają się być:
1) wymuszają zmianę wartości na wszystkich obserwabli są sprawdzane przed (okropny) 2) Siła ponowną ocenę IsValid dependantObservable aby wywołać abonenta (mniej straszne, ale nadal źle) 3) ponownie napisać bibliotekę walidacji narazić forceValidation()
funkcję, która jakoś wyzwolić wszystko, aby zostać poddane ponownej ocenie, pomijając konieczność dla obserwabli bazowych do wyzwalania rurociągu walidacji.
Wszelkie pomysły?
Oh genialny, powiedziano mi też, że '' notifySubscribers (CurrentValue) '' woudl wykonać zadanie, ale jeśli ten nie wymaga najpierw przeczytać, że jest to lepsze rozwiązanie. dzięki! – Grofit
valueHasMutated wyśle bieżącą wartość przechowywaną wewnętrznie w obserwowalnym, podczas gdy notifySubscribers wyśle dowolną wartość, którą przekazujesz jako pierwszy argument (co wymagałoby odczytania aktualnej wartości w twoim przypadku). –
@RPNiemeyer Czy coś się zmieniło w sposobie, w jaki to działa? W wersji 2.3.0 pojawia się błąd 'Object ... nie ma wartości 'valueHasMutated'', natomiast wywoływanie' myComputed.notifySubscribers (myComputed()) 'nie daje mi takiego błędu ... – ach