Comment avoir plusieurs attributs de liaison de données sur un élément?


94

J'ai besoin de plusieurs liaisons de données sur un élément. Par exemple, je veux une liaison de données hrefainsi qu'une htmlliaison de données sur une a balise. J'ai essayé ça,

<a data-bind="html: name" 
   data-bind="attr: { href: url }" 
   data-bind="attr: { 'data-prop': xyz }">
</a>

Mais ça ne marche pas. Il semble que knockout ne prend en charge que la liaison d' une data-bind propriété? Comment lier à la fois l' attribut, le " " hrefinterne htmlet un " data-prop" personnalisé sur un élément?

Réponses:


127

Comme ça:

<a data-bind="html: name, attr: { href: url }">

Vous utilisez des liaisons séparées par des virgules - l'attribut est le même que le passage d'un objet:

{
    html: name, 
    attr: { href: url }
}

Ou, si vous posez des questions sur plusieurs attrliaisons à la fois:

<a data-bind="html: name, attr: { href: url, 'data-prop': FullName }">

Pouvez-vous aussi me dire que, si viewModel.tasks = ko.observableArray (tsks) puis en changeant viewModel.tasks = [new Array], Comment dire Knock que le tableau est changé
user960567

lorsque vous définissez une valeur ko.observable, essayez de le faire comme ceci: viewModel.tasks([1,2,3]);. C'est-à-dire que vous l'appelez en tant que fonction, en passant la nouvelle valeur en tant que paramètre
paulslater19

2

C'est ainsi que j'ai implémenté l'attribut source et l'événement de clic à l'aide de la liaison de données. Vous pouvez peut-être le trouver utile.

<img data-bind="{click: function(data, event) {ESVendorWidget.loadFunction(data,event)},
                 attr: {src: $data.Photo.PhotoUrl }}"
     alt="package pic" class="big" />

1

J'utilise simplement:

<input type="checkbox"
    data-bind="click: callFunction(), checkedValue: 0, checked: Card.Days">

pour un élément de case à cocher.


1

vous pouvez utiliser plusieurs propriétés en utilisant , comme ci-dessous

<a data-bind="attr: { href: url, id: id , class: classvalue}">

objet comme ça

{ url: 'http://stackoverflow.com', id:'newid' , classvalue: 'classname' }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.