Come avere più attributi di associazione dati su un elemento?


94

Ho bisogno di più associazioni di dati su un elemento. Ad esempio, voglio hrefun'associazione di htmldati su un a tag. L'ho provato,

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

Ma questo non funziona. Sembra che knockout supporti solo l'associazione di una data-bind proprietà? Come legare sia l' attributo " " href, quello interno htmle quello personalizzato data-propa un elemento?

Risposte:


127

Come questo:

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

Utilizzi associazioni separate da virgole: l'attributo è lo stesso del passaggio di un oggetto:

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

Oppure, se stai chiedendo informazioni su più attrassociazioni contemporaneamente:

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

Puoi anche dirmi che, se viewModel.tasks = ko.observableArray (tsks) quindi cambiando viewModel.tasks = [new Array], come dire a knock che l'array è cambiato
user960567

quando si imposta un valore ko.observable, prova a fare in questo modo: viewModel.tasks([1,2,3]);. Cioè lo chiami come una funzione, passando il nuovo valore come parametro
paulslater19

2

È così che ho implementato l'attributo di origine e l'evento di clic utilizzando il data-bind. Potresti trovarlo utile.

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

1

Uso semplicemente:

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

per un elemento casella di controllo.


1

puoi usare più proprietà usando , come sotto

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

oggetto come questo

{ url: 'http://stackoverflow.com', id:'newid' , classvalue: 'classname' }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.