it-swarm.com.de

Data-Bind-Href-Attribut für Ankertag

Ich versuche, Ankerattribute an ein KnockoutJS ViewModel-Feld zu binden. Ich habe so etwas ausprobiert:

<a data-bind="href: Link, value: Title"></a>

aber das geht nicht. Wo kann ich eine Liste möglicher Datenbindungswerte für HTML-Elemente erhalten?

40
xwrs

Sie müssen die Bindung attr verwenden, damit Sie jedes beliebige Attribut setzen können.

Zum Beispiel:

<a data-bind="attr: { href: Link, title: Title }, text: Title">xxx</a>
95
Richard Friend

Hier finden Sie eine Liste aller möglichen Bindungen.

http://knockoutjs.com/documentation/value-binding.html

auf der linken Seite (Seitenleiste) finden Sie Links zu anderen Bindungen wie Text, Attr-Stil und mehr.

Du kannst das 

attr: { href: Link}, text: Title wie xwrscommented

oder erstellen Sie eine Vorlage http://knockoutjs.com/documentation/template-binding.html

hoffe das hilft

12
dknaack

Als alternative zu @ RichardFriends Antwort (und eine häufig verwendete Option) können Sie einen benutzerdefinierten Bindungshandler schreiben, um Ihre Ansichten etwas knapper zu gestalten:

ko.bindingHandlers['href'] = {
  update: function(element, valueAccessor) {
    element.href = ko.utils.unwrapObservable(valueAccessor());
  }
};

ko.applyBindings({
  myUrl: 'http://stackoverflow.com',
  myText: 'Stack Overflow website'
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<a data-bind="href: myUrl, text: myText"></a>

1
Jeroen

Das funktioniert perfekt für mich 

            <td class="CommandArea" rowspan="2">
            <p><a href='#' data-bind="click: abandon" >Abandon</a></p>
            </td>
0
MarlinG