web-dev-qa-db-fra.com

Définition de l'attribut id avec knockoutjs, y compris un préfixe

J'utilise KnockoutJS pour parcourir un objet, comme ceci:

Maintenant tout cela fonctionne. Mais le problème que j’ai, c’est qu’il définit le id du button en un nombre. Alors ça ressemble à ça:

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

J'ai donc essayé de mettre un préfixe devant la propriété 'Id', comme ceci:

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

Mais cela ne semble pas fonctionner. Mon id se remplit d'une fonction observable de Knockout quand je le fais comme ça ...

Ma question est donc la suivante: comment puis-je ajouter un préfixe lorsque je spécifie l'attribut id d'un champ?

71
w00

Si Id est observable, vous devez le "décompresser": 'myprefix_' + Id().

54
Michael Best

En fait utilisé aujourd'hui - pour dérouler l'observable que je devais faire:

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

J'espère que cela t'aides.

64
Cordell Lawrence

Je pense qu'il est préférable d'utiliser l'indice $ par exemple

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