2012-09-20 14 views
61

estoy usando KnockoutJS para iterar sobre un objeto, como esto:se establece el atributo id con knockoutjs incluyendo un prefijo

Ahora funciona todo esto. Pero el problema que tengo es que establece el id del button en solo un número. Por lo que se ve así:

<button id="1">Button 1</button> 
<button id="3">Button 2</button> 
<button id="8">Button 3</button> 

así que traté de poner un prefijo delante de la propiedad de la del 'Id', así:

<div data-bind="foreach:Items"> 
    <button data-bind="text: Name, attr: {'id': 'myprefix_' + Id}"></button> 
</div> 

Pero eso no parece estar funcionando. Mi id se llena con alguna función observable Knockout cuando lo hago así ...

Así que mi pregunta es, ¿cómo puedo agregar un prefijo cuando especifique el atributo id de un campo?

Respuesta

54

Si Id es un observable, debe "desenvolverlo": 'myprefix_' + Id().

20

creo que lo mejor es utilizar el índice $ por ejemplo

<div data-bind="foreach:Items"> 
    <button data-bind="text: Name, attr: {id: 'myprefix_' + $index() }"></button> 
</div> 
+5

I upvoted antes de encontrar, al menos en mi caso particular, que tenía que utilizar "índice de $()", no sólo "$ Index". –

58

usado En realidad esto hoy - a desenvolver el observable que tenía que hacer:

<button data-bind="attr: { id: 'prefix_' + $index() }"> Send </button> 

Espero que esto ayude.

0

 <img data-bind="event: {click: $root.afficherDetailmembreFamille}" src="ucc/gestion_Famille/images/arbre-fleche-off.png" /> 

      <label data-bind=" text: nom"></label> 
      <label data-bind=" text: prenom, click: $root.afficherDetailmembreFamille"></label> 
    <br> 

    <div data-bind="attr: {'id': 'DivMembreFamille'+id}" style="margin-left: 40px; display: none;"> 
Cuestiones relacionadas