Jak mieć wiele atrybutów wiązania danych w jednym elemencie?

95

Potrzebuję wielu powiązań danych w jednym elemencie. Na przykład, chcę hrefjak również htmlwiązania danych na jednej a zmiennej. Próbowałem tego,

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

Ale to nie działa. Wygląda na to, że nokaut obsługuje tylko wiązanie jednej data-bind właściwości? Jak powiązać zarówno hrefwewnętrzny html, jak i niestandardowy data-propatrybut „ ” w jednym elemencie?

user960567
źródło

Odpowiedzi:

128

Lubię to:

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

Używasz wiązań rozdzielanych przecinkami - atrybut jest taki sam jak przekazywanie obiektu:

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

Lub, jeśli pytasz o wiele attrpowiązań naraz:

<a data-bind="html: name, attr: { href: url, 'data-prop': FullName }">
paulslater19
źródło
Czy możesz mi również powiedzieć, że jeśli viewModel.tasks = ko.observableArray (tsks) to zmieniając viewModel.tasks = [nowa tablica], jak powiedzieć knock, że tablica została zmieniona
user960567
przy ustalaniu wartości ko.observable, spróbować zrobić to tak: viewModel.tasks([1,2,3]);. Tj.
Nazywasz
2

W ten sposób zaimplementowałem atrybut źródła i zdarzenie kliknięcia za pomocą wiązania danych. Może ci się to przydać.

<img data-bind="{click: function(data, event) {ESVendorWidget.loadFunction(data,event)},
                 attr: {src: $data.Photo.PhotoUrl }}"
     alt="package pic" class="big" />
aamir sajjad
źródło
1

Po prostu używam:

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

dla elementu pola wyboru.

chris
źródło
1

możesz użyć wielu właściwości, używając , jak poniżej

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

obiekt taki jak ten

{ url: 'http://stackoverflow.com', id:'newid' , classvalue: 'classname' }
Surendra Kumar Ahir
źródło