2016-12-02 5 views
0

Ich habe das Netz gesucht und verschiedene Ansätze versucht, aber die Klick-Funktion manchmal feuert und manchmal nicht.Daten binden die Funktion auf Klick mit mehreren Parametern knockout

Hier ist mein HTML-Code

   <input type="radio" data-bind="checked:a,checkedValue: 0, click: radio('dance','a')" id="a_normal" ><span class="OptionsTextProperties"> Normal </span> 

       <input type="radio" data-bind="checked:a, checkedValue: 1 , click: radio('dance','a')" id="a_abnormal" ><span class="OptionsTextProperties"> Abnormal </span> 

Hier wird die Funktion I

radio : function(key,key1) 
    { 
     console.log(key,key1); 
     return;   
    }, 

Die meiste Zeit die oben genannten Funktion Feuer zu nennen bin versucht, aber manchmal passiert nichts, wenn ich auf den Button klicken . Ich habe auch bind verwendet, aber das überprüft nicht die Optionsschaltfläche. Nicht sicher, was das Problem ist. Ich habe auch viele Links hier bei stackoverflow durchlaufen. Vielleicht mache ich etwas falsches, auf das ich nicht hinweisen kann. Vielen Dank für Ihre Hilfe

+0

Es scheint in der Geige zu arbeiten. https://jsfiddle.net/gqaLcapv/1/ Das Click-Ereignis wird immer ausgelöst. – Adrian

+0

Hey Adrian, es funktioniert die meiste Zeit ... Auch ich habe es in einer Geige versucht und es funktioniert gut. Dank – user6000866

Antwort

0

radio('dance','a') muss eine Funktion zurückgeben, wenn Sie es in einer click Datenbindung verwenden möchten.

Wichtiger noch: Sie sollten nicht an das Ereignis click in einem Kontrollkästchen binden. Sie können Kontrollkästchen mit der Tastatur aktivieren. du wirst diese vermissen.

Mit Knockout, ist es besser zu subscribe an den datengebundenen Wert:

var vm = { 
 
    checked: ko.observable(false) 
 
}; 
 

 
vm.checked.subscribe(function onCheck() { 
 
    console.log("Click!"); 
 
}); 
 

 
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 

 
<label> 
 
    <input type="checkbox" data-bind="checked: checked"> 
 
    A checkbox 
 
    </label>

Wenn Sie Notwendigkeit über ein Ereignis zu binden, würde ich vorschlagen, die change zu verwenden Ereignis stattdessen.

+0

Ich brauche die Bindung auf Klick zu tun, da ich im Backend eine Menge Dinge tue, wenn das Optionsfeld geklickt wird. Ich werde versuchen, Ihre Lösung von subscribe verwenden. Vielen Dank – user6000866

Verwandte Themen