Ich habe ein Kontrollkästchen und klicke auf ein Ereignis für ein Kontrollkästchen zum Aktualisieren von Daten. Wenn ich auf das Kontrollkästchen klicke, werden die Daten aktualisiert, aber das Kontrollkästchen wird nicht überprüft.
Dies ist mein HTML-Code:
%Vor%Das ist mein Skript:
%Vor%Ich möchte, dass mein Kontrollkästchen aktiviert wird, wenn darauf geklickt wird. Und danach aktualisierte Daten nach dem Anklicken des Kontrollkästchens.
Siehe : Ссылка
Hinweis 3: Zulassen der standardmäßigen Klickaktion
In der Standardeinstellung verhindert Knockout, dass das Klickereignis einnimmt Standardaktion Dies bedeutet, dass wenn Sie die Klick-Bindung für eine a Tag (ein Link), zum Beispiel ruft der Browser nur Ihren Handler auf Funktion und wird nicht zum Verweis href navigieren. Dies ist nützlich Standard, denn wenn Sie die Klickbindung verwenden, liegt das normalerweise daran Sie verwenden den Link als Teil einer Benutzeroberfläche, die Ihre Ansicht manipuliert Modell, nicht als regulärer Hyperlink zu einer anderen Webseite.Wenn Sie jedoch die standardmäßige Klickaktion fortsetzen möchten, einfach geben Sie true von Ihrer Click-Handler-Funktion zurück .
Bearbeiten: Beispiel hinzugefügt, wo in der Funktion
true
zurückgegeben wird. Es muss von der eigentlichen Funktion selbst zurückgegeben werden, nicht vom Ajax success
oder error
Handler.
%Vor%
Es scheint so, als ob Sie das Kontrollkästchen deaktivieren, wenn status = false, aber die einzige Möglichkeit, den Status auf "true" zu setzen, ist, wenn Sie es überprüfen. Aus diesem Grund wird das Kontrollkästchen nicht aktiviert, obwohl Knockout weiß, dass es angeklickt ist.
Da es deaktiviert ist, können Sie das Kontrollkästchen nicht aktivieren. Daher müssen Sie die disable: status
Datenbindung entfernen oder die disable
Logik an einer Stelle platzieren, damit Sie den Wert des Kontrollkästchens ändern können.
Das liegt daran, dass das Standardverhalten von Ereignishandlern in Knockout darin besteht, die Standardaktion für das Ereignis zu deaktivieren. In diesem Fall führt Ihr click
-Handler das aus.
Eine Lösung, die ich empfehle, ist, den click
-Handler zu vermeiden und Ihre UpdateStatus
als Status-Abonnement ausführen zu lassen. In Ihrem Modellkonstruktor sollten Sie self.status.subscribe(self.UpdateStatus, self);
Eine andere Lösung ist die hier , bei der true
von Ihrem click
-Handler zurückgegeben wird.
Ich habe es hier ausprobiert und es funktioniert, wenn UpdateStatus
true
(verhindert die Änderung des Werts) und% co_de zurückgibt % muss offensichtlich ein beobachtbarer Wert sein.
Tags und Links knockout.js javascript asp.net