Ich bin verwirrt, wie die Parameter in die Funktion aus dem HTML übergeben werden.Knockout Klick Bindung mit mehreren Parametern
<tbody data-bind="foreach: colorItem">
<tr>
<td data-bind="click: $root.colorTest.bind($data, 'red', 'blue'), text: 'color'"></td>
</tr>
</tbody>
public colorTest(data, param1, param2) {
if (param1 == 'red'){
// do something
}
In der Colortest-Funktion, ich erwarte, dass ‚Daten‘ $ data und ‚param1‘ zu halten, den Wert ‚rot‘ und ‚param2‘ zu halten, den Wert ‚blau‘ zu halten.
Allerdings werden $ Daten immer in das letzte Parameterfeld übernommen. Also in der colorTest-Funktion, Daten = 'rot', param1 = 'blau', param2 = '$ data'.
Funktioniert das Knockout? $ data wird immer als letzter Parameter in eine Funktion übergeben, auch wenn sie als erstes in der HTML-Datenbindung steht?
danke. Das funktioniert. Aber brauche ich $ Daten explizit zu übergeben? Wie Sie sagen, sendet Knockout automatisch $ data und $ event nach den gebundenen Argumenten (ich habe das gesehen). Sendet es $ Daten zweimal? Wäre es besser, "... colorTest.bind ($ root, 'red', 'blue') zu verwenden und dann die $ data mit dem dritten Parameter in meiner Funktion zu erfassen, so dass es wie folgt aussieht: public colorTest (param1, param2 , Daten) "? – nanonerd
Ja, das sollte auch funktionieren. –