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?

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 }">

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" />

1

Eu simplesmente uso:

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

para um elemento de caixa de seleção.


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' }
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.