使用knockoutjs attr写入数据*属性
我遇到了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 
有人可以看到这里出了什么问题吗?
干杯!
你只需要把双引号括起来:
 <input data-bind='text: Title, attr: {"data-id": "Events[" + viewModel.events.indexOf($data) + "].Title"}'/> 
以下是说明如何使用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> 
 你甚至不需要在attr名字中加上双引号或者单引号,只需简单地使用data-id 
 <input data-bind='text: Title, attr: {data-id: "Events[" + viewModel.events.indexOf($data) + "].Title"}'/>