2013-03-22 12 views
7

Ho un tag di ancoraggio con un'icona all'interno di esso in questo modo:Knockout vincolante per il tag di ancoraggio

<a> 
    <i class="icon-flip-2"></i> 
    hello 
</a> 

Vorrei sostituire il testo ciao con un elemento rilegata. Qualcosa di simile:

<a data-bind="text: myValue"> 
    <i class="icon-flip-2"></i> 
    hello 
</a> 

Il problema è che ho perso l'elemento < class i = "icona-flip-2">

voglio tenerlo ed essere in grado di legare qualcosa sul tag di ancoraggio.

Grazie.

Qualche idea?

risposta

11

Utilizzare un elemento virtuale

<a> 
    <i class="icon-flip-2"></i> 
    <!-- ko text: myValue --><!-- /ko --> 
</a> 

o un <span>

<a> 
    <i class="icon-flip-2"></i> 
    <span data-bind="text: myValue, if: myValue().length > 0"></span> 
</a> 
+0

L'elemento virtuale sembra adattarsi a ciò di cui ha bisogno. Gli offre un modo per legare il testo senza utilizzare una nuova estensione. – sngregory

+0

@sngregory Lo span con un 'if:' binding è quello che userei, ma è solo una preferenza personale. – Tomalak

+0

Sono d'accordo con te, ma sembra andare contro ciò che sta cercando di ottenere dal momento che richiederebbe una modifica CSS. – sngregory

0

Inserisci il tuo testo all'interno di uno span all'interno di un tag e associa invece la proprietà di testo dello span.

0

sarei tentato di mettere il testo in un arco:

<a> 
    <i class="icon-flip-2"></i> 
    <span data-bind="text: myValue"></span> 
</a> 
+0

@Golo: preferisco evitare utilizzando un intervallo extra perché dovrei regolare il mio css. – Bronzato

+0

Per essere onesti, se hai un elemento html all'interno di un altro, preferisco avere tutto all'interno di un elemento. –

Problemi correlati