Como ter vários atributos de vinculação de dados em um elemento?

94

Eu preciso ter várias ligações de dados em um elemento. Por exemplo, eu quero um href, bem como um htmldata-binding em uma a tag. Eu tentei isso,

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

Mas isso não funciona. Parece que o knockout só oferece suporte para vincular uma data-bind propriedade? Como vincular o atributo href, o interno htmle um data-propatributo " " personalizado em um elemento?

user960567
fonte

Respostas:

127

Como isso:

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

Você usa vinculações separadas por vírgulas - o atributo é o mesmo que passar um objeto:

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

Ou, se você estiver perguntando sobre várias attrligações de uma vez:

<a data-bind="html: name, attr: { href: url, 'data-prop': FullName }">
paulslater 19
fonte
Você também pode me dizer que, se viewModel.tasks = ko.observableArray (tsks), em seguida, alterando viewModel.tasks = [new Array], como dizer ao knock se a matriz foi alterada
user960567
ao definir um valor ko.observable, tente fazê-lo como este: viewModel.tasks([1,2,3]);. Ou seja, você o chama como uma função, passando o novo valor como um parâmetro
paulslater19
2

É assim que implementei o atributo source e o evento click usando data-bind. Você pode achar útil.

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

Eu simplesmente uso:

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

para um elemento de caixa de seleção.

chris
fonte
1

você pode usar várias propriedades usando , como abaixo

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

objeto como este

{ url: 'http://stackoverflow.com', id:'newid' , classvalue: 'classname' }
Surendra Kumar Ahir
fonte