Festlegen des id-Attributs mit knockoutjs einschließlich eines Präfixes

76

Ich verwende KnockoutJS, um ein Objekt wie folgt zu durchlaufen:

Jetzt funktioniert das alles. Aber das Problem, das ich habe, ist, dass es das idvon buttonnur auf eine Zahl setzt. So sieht es aus:

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

Also habe ich versucht, ein Präfix vor die 'Id'-Eigenschaft zu setzen, wie folgt:

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

Aber das scheint nicht zu funktionieren. idWenn ich es so mache, wird meine Funktion mit einer beobachtbaren Knockout-Funktion gefüllt ...

Meine Frage ist also, wie kann ich ein Präfix hinzufügen, wenn ich das idAttribut eines Feldes spezifiziere ?

w00
quelle

Antworten:

57

Wenn Idein Observable ist, müssen Sie es "auspacken" : 'myprefix_' + Id().

Michael Best
quelle
68

Habe das heute tatsächlich benutzt - um das Observable auszupacken, das ich tun musste:

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

Hoffe das hilft.

Cordell Lawrence
quelle
29

Ich denke, es ist am besten, zum Beispiel den $ -Index zu verwenden

<div data-bind="foreach:Items">
    <button data-bind="text: Name, attr: {id: 'myprefix_' + $index() }"></button>
</div>
Code5
quelle
5
Ich stimmte zu, bevor ich zumindest in meinem speziellen Fall feststellte, dass ich "$ index ()" verwenden musste, nicht nur "$ Index".
Mark Meuer
-1

       <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;">
HMI
quelle