Supongamos que tengo plantilla knockout.js así:identificadores únicos en las plantillas knockout.js
<script type="text/html" id="mytemplate">
<label for="inputId">Label for input</label>
<input type="text" id="inputId" data-bind="value: inputValue"/>
</script>
Si me hacen esta plantilla en varios lugares en la página termino con varias entradas con el mismo ID (y varias etiquetas con el mismo valor para), lo que tiene malas consecuencias. En particular, todos los códigos que dependen de los identificadores pueden no funcionar correctamente (en mi caso, uso el complemento jquery.infieldlabel que se confunde con varias entradas con el mismo ID). A mi modo de resolver este problema ahora es agrego atributo id único para el modelo que se unen a la plantilla:
<script type="text/html" id="mytemplate">
<label data-bind="attr: {for: id}>Label for input</label>
<input type="text" data-bind="attr: {id: id}, value: inputValue"/>
</script>
Esto funciona, pero no es muy elegante ya que tiene que tener este atributo id artificial en mis modelos eso no se usa para nada más. Me pregunto si hay una mejor solución aquí.
En segundo lugar. Pero, ¿puedo ser irritante y pedir consejo sobre una variante un poco más compleja del problema? Donde tienes un par de radios con, por ejemplo, "Sí" y "No" como las etiquetas, cada una vinculada a un solo observador booleano, p. "Está activo". Por el momento, los 4 elementos, las 2 radios y las 2 etiquetas, todos obtienen la misma identificación. Los pares de radios en sí aparecen varias veces, así que estoy generando un atributo de nombre único para cada par con un enlace Knockout, por lo que necesito poder prefijar ese nombre específico del par actual a los ID. –
También podría usar data-bind = "attr: {for: 'status_' + $ index}" y data-bind = "attr: {id: 'status_' + $ index}" para ID únicos – viperguynaz
También podría usar data-bind = "attr: {for: 'status_' + $ index}" y data-bind = "attr: {id: 'status_' + $ index}" para identificaciones únicas. $ index to se refiere al índice basado en cero del elemento del arreglo actual. El índice $ es observable y se actualiza cada vez que cambia el índice del elemento (por ejemplo, si se agregan o quitan elementos de la matriz). – viperguynaz