knockout.js verwendet $ index mit if bind

82

Ich versuche, ein Markup basierend auf dem Wert von $indexanzuzeigen. Ich kann den Wert anzeigen, aber ich kann ihn scheinbar nicht mit einer ifBindung verwenden. Was ist hier der beste Ansatz?

<!-- ko if: $index===0 -->
  <div>some mark up here</div>
<!-- /ko -->
user1255162
quelle

Antworten:

152

$ index ist ein Observable und Observables sind Funktionen. Wenn Sie Observablen in einem Ausdruck verwenden, müssen Sie das Formular () verwenden, um auf den Wert zuzugreifen.

<!-- ko if: $index() === 0 -->
John Earles
quelle
15

Von der Seite mit den Knockout-Bindungen

$ index (nur innerhalb von foreach-Bindungen verfügbar)

Dies ist der auf Null basierende Index des aktuellen Array-Eintrags, der von einer foreach-Bindung gerendert wird. Im Gegensatz zu den anderen Bindungskontexteigenschaften ist $ index beobachtbar und wird aktualisiert, wenn sich der Index des Elements ändert (z. B. wenn Elemente zum Array hinzugefügt oder daraus entfernt werden).

Beispiel

<div data-bind="foreach: details.additionalDetails">
    <!-- ko if: $index() !== 0 -->
        <span> | </span>
     <!-- /ko -->
        <span data-bind="text: name"></span> <span data-bind="text: value"></span>
</div>

Ergebnisse in

Model #: UAI5021 | Catalog #: UIOY786
JackMorrissey
quelle