Mam prosty model widoku z kilkoma wymaganymi atrybutami ... Chcę, aby każde wejście podświetlało kolor czerwony, jeśli odpowiednia właściwość nie jest poprawna, ale nie chcę, aby to podświetlenie było wyświetla się, gdy strona jest początkowo ładowana ... tylko wtedy, gdy zmienia się wartość lub gdy użytkownik próbuje zapisać/kontynuować ...Zapobieganie sprawdzaniu nokautu od oceny przy początkowym obciążeniu
Teraz sprawdza poprawność modelu widoku podczas początkowego obciążenia, ponieważ określam powiązanie danych = "css: {error: name.isValid() == false}", ale nie znam żadnego innego sposobu, aby to działało dynamicznie (podobnie jak działa sprawdzająca poprawność jQuery) ...
var foo = { name: ko.observable().extend({required: true}) };
<div data-bind="css: { error: !name.isValid() }">
<input type="text" data-bind="value: name" />
</div>
Wszelkie pomysły na to, jak wykonać tę pracę, zostaną docenione ... Dzięki!
Niestety, w moim dążeniu do uproszczenia moim przykładem, wyszedłem na zewnątrz, że jestem w rzeczywistości dekorowanie elementu div rodzicem za pomocą klasy "error", a nie samego elementu wejściowego, ponieważ istnieją inne elementy potomne/elementy rodzeństwa, które również wymagają zmiany (np. kolor etykiety i "*" widoczność zakresu), więc to nie zadziała dla mnie jednak myślę, że wymyśliłem sposób, aby to osiągnąć plish to ... zasadniczo, dołączam .isModified (false) po każdym wywołaniu .extend(), a następnie sprawdzam, czy .isModified() w mojej logice wiążącej css (patrz poniżej ...) –
Dołączyłem moją odpowiedź z prostsze i bardziej powtarzalne rozwiązanie udekoruj element nadrzędny .... wypróbuj go! – RodneyTrotter
Udało mi się uruchomić go bez konieczności tworzenia programu obsługi wiążącej ... Jedyną częścią, której nie lubię w moim rozwiązaniu, jest to, że muszę ręcznie przeglądać właściwości modelu widoku i ustawić wartość isModified (true)), aby nieprawidłowe, ale niezmodyfikowane pola pokazywały swój stan błędu, gdy mój zewnętrzny obiekt wywoływał .save(). –