knockout.js - for - knockout select value binding
Trabajar con atributos knockoutjs para escribir datos* (3)
A continuación se muestra un fragmento de trabajo que ilustra cómo establecer un valor de atributo de datos personalizado con 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>
Me encuentro con un problema con los atributos de datos * en knockout.js, es decir. escribiéndolos con attr
.
Puedo hacer esto sin ningún problema:
<input data-bind=''text: Title, attr: {name: "Events[" + viewModel.events.indexOf($data) + "].Title"}''/>
pero si quiero usar data-id
, la forma normal no funciona, así que pongo una sola cita alrededor del atributo:
<input data-bind=''text: Title, attr: {''data-id'': "Events[" + viewModel.events.indexOf($data) + "].Title"}''/>
que me da
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
¿Alguien puede ver lo que salió mal aquí?
¡Aclamaciones!
Ni siquiera necesita poner comillas dobles o simples alrededor del nombre de attr, simplemente vaya con simplemente data-id
<input data-bind=''text: Title, attr: {data-id: "Events[" + viewModel.events.indexOf($data) + "].Title"}''/>
Solo necesita poner comillas dobles alrededor de esto:
<input data-bind=''text: Title, attr: {"data-id": "Events[" + viewModel.events.indexOf($data) + "].Title"}''/>