Ist es möglich, das Styling (unter Verwendung von "style" - oder "css" -Bindung) eines Optionselements einer Auswahlliste zu ändern, wenn die Bindung "Optionen" in einer Auswahlliste verwendet wird? Oder kann dies nur getan werden, indem man auf der Auswahlliste eine 'foreach' verwendet und das Styling für jedes ändert?Knockout.js Farbe <option> bei Verwendung von 'Optionen' Bindung ändern?
Ich habe dies in Code:
<select id="components-select" size="4" name="components-select"
data-bind=" options: combinedComponents,
optionsText: 'displayName',
optionsValue: 'id',
value: chosenComponent"></select>
aber wenn ich anhängen dann die gesamte Liste ist rot gefärbt, wenn isDefault
false zurück.
ist der einzige Weg, dies zu erreichen, es auf diese Weise zu kodieren:
<select id="components-select" size="4" name="components-select"
data-bind="foreach: combinedComponents">
<option data-bind="value: id, text: displayName, style: {color: isDefault() === true ? 'black' : 'red'}"></option>
</select>
Oder gibt es irgendeine Form von Knockout.js wizardry, die ich nicht bewusst bin?
Danke!
Keine Zauberei Optionen gibt, die ich kenne. Der standardmäßige 'options' binding-Handler gibt nur das aus, was unbedingt erforderlich ist, um die erforderliche Semantik zu erhalten. Und das Festlegen der Farbe für jede der Optionen war keine konfigurierbare Einstellung. Sie könnten den Handler neu schreiben, um diese Optionen hinzuzufügen. Möglicherweise die Stile festlegen, nachdem die Steuerelemente gerendert werden? –
Nein, es gibt keine direkte Unterstützung dafür in der KO-Optionsbindung. Aber ich denke, Ihr zweites Beispiel mit dem Handbuch 'foreach' ist die einfachste Lösung für dieses Problem. – nemesv
Wenn Sie so etwas mehr als nur dieses eine Mal tun, sollten Sie besser Ihren eigenen Bindungs-Handler erstellen, indem Sie 'options' als Leitfaden verwenden, z. 'optionsWithColor' –