47

私はknockout.jsのdata*属性に問題があります。それらをで書き出す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

誰かがここで何が悪かったのかわかりますか?

乾杯!

4

3 に答える 3

86

二重引用符で囲む必要があります。

<input data-bind='text: Title, attr: {"data-id": "Events[" + viewModel.events.indexOf($data) + "].Title"}'/>
于 2013-01-23T02:04:09.597 に答える
1

attr名を二重引用符または一重引用符で囲む必要はありません。単純に使用してください。data-id

<input data-bind='text: Title, attr: {data-id: "Events[" + viewModel.events.indexOf($data) + "].Title"}'/>
于 2017-10-13T06:43:52.370 に答える
0

以下は、Knockoutを使用してカスタムデータ属性値を設定する方法を示す実用的なスニペットです。

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>

于 2016-02-03T19:07:39.890 に答える