Как иметь несколько атрибутов привязки данных к одному элементу?

94

Мне нужно иметь несколько привязок данных к одному элементу. Например, я хочу href, а также htmlсвязывание данных-на одном a метке. Я пробовал это,

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

Но это не работает. Кажется, нокаут поддерживает привязку только одного data-bind свойства? Как привязать к одному элементу hrefкак внутренний html, так и настраиваемый data-propатрибут?

user960567
источник

Ответы:

127

Как это:

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

Вы используете привязки, разделенные запятыми - атрибут аналогичен передаче объекта:

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

Или, если вы спрашиваете о нескольких attrпривязках одновременно:

<a data-bind="html: name, attr: { href: url, 'data-prop': FullName }">
Полслейтер19
источник
Можете ли вы также сказать мне, что если viewModel.tasks = ko.observableArray (tsks), то при изменении viewModel.tasks = [new Array], как узнать, что этот массив изменен,
user960567
при установке ko.observable значения, попробуйте сделать это следующим образом : viewModel.tasks([1,2,3]);. Т.е. вы вызываете его как функцию, передавая новое значение в качестве параметра
paulslater19
2

Вот как я реализовал атрибут источника и событие щелчка с помощью привязки данных. Вы можете найти это полезным.

<img data-bind="{click: function(data, event) {ESVendorWidget.loadFunction(data,event)},
                 attr: {src: $data.Photo.PhotoUrl }}"
     alt="package pic" class="big" />
Аамир Саджад
источник
1

Я просто использую:

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

для элемента флажка.

Крис
источник
1

вы можете использовать несколько свойств, , как показано ниже

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

объект вроде этого

{ url: 'http://stackoverflow.com', id:'newid' , classvalue: 'classname' }
Сурендра Кумар Ахир
источник