J'essaie de lier les attributs d'ancrage à un champ KnockoutJS ViewModel. J'ai essayé quelque chose comme ça:
<a data-bind="href: Link, value: Title"></a>
mais ça ne marche pas. Où puis-je obtenir une liste des valeurs possibles de liaison de données pour les éléments HTML?
Vous devez utiliser la liaison attr
, cela vous permet de définir n'importe quel attribut.
Par exemple:
<a data-bind="attr: { href: Link, title: Title }, text: Title">xxx</a>
Ici vous pouvez trouver une liste de toutes les liaisons possibles.
http://knockoutjs.com/documentation/value-binding.html
sur le côté gauche (barre latérale), vous trouverez des liens vers d'autres liaisons, telles que du texte, un style attr, etc.
Tu peux le faire
attr: { href: Link}, text: Title
comme xwrs
commented
ou créer un modèle http://knockoutjs.com/documentation/template-binding.html
j'espère que cela t'aides
En tant que alternative à @ RichardFriend's answer (et l'option plus couramment utilisée), vous pouvez écrire un gestionnaire de liaison personnalisé pour rendre vos vues un peu plus concises:
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>
Cela fonctionne parfaitement pour moi
<td class="CommandArea" rowspan="2">
<p><a href='#' data-bind="click: abandon" >Abandon</a></p>
</td>