Работа с knockoutjs attr для записи данных * атрибуты
я столкнулся с проблемой с атрибутами data* в нокауте.js ie. выписывать их с помощью attr
.
Я могу сделать это без проблем:
<input data-bind='text: Title, attr: {name: "Events[" + viewModel.events.indexOf($data) + "].Title"}'/>
но если я хочу использовать data-id
, обычный способ не работает, поэтому я помещаю одну цитату вокруг атрибута:
<input data-bind='text: Title, attr: {'data-id': "Events[" + viewModel.events.indexOf($data) + "].Title"}'/>
что дает мне
Error: Unable to parse bindings.
Message: SyntaxError: missing } in compound statement;
Bindings value: attr: {
http://127.0.0.1:21254/Scripts/knockout/knockout-2.2.0.js
может кто-нибудь увидеть, что здесь пошло не так?
Ура!
3 ответов
вам просто нужно поставить двойные кавычки вокруг него:
<input data-bind='text: Title, attr: {"data-id": "Events[" + viewModel.events.indexOf($data) + "].Title"}'/>
Ниже приведен рабочий фрагмент, иллюстрирующий, как установить значение атрибута пользовательских данных с нокаутом:
ko.applyBindings({
somevalue: 'foo',
title: 'Knockout custom data attribute binding -- example'
});
$("#result").text($("#test-el").data("someattr"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div data-bind="text: title, attr: {'data-someattr': somevalue}" id="test-el"></div>
<p>
<b>Test data attribute expected value:</b> foo
</p>
<p>
<b>Test data attribute value: </b>
<span id="result"></span>
</p>
вам даже не нужно ставить двойные или одинарные кавычки вокруг имени attr, просто идите с просто data-id
<input data-bind='text: Title, attr: {data-id: "Events[" + viewModel.events.indexOf($data) + "].Title"}'/>