Checkbox wird nicht in Knockout eingecheckt

8

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.

    
akeeseth 09.10.2012, 08:39
quelle

4 Antworten

22

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%     
Willem Duncan 09.10.2012, 08:59
quelle
0

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.

    
Jensen Ching 09.10.2012 08:44
quelle
0

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);

hinzufügen

Eine andere Lösung ist die hier , bei der true von Ihrem click -Handler zurückgegeben wird.

    
Michael Best 09.10.2012 08:51
quelle
0

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.

    
Johannes Egger 09.10.2012 09:00
quelle

Tags und Links