86

I'm trying to show some mark up based on the value of $index, I can display the value but I can't seem to use it with an if binding, what's the best approach here?

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

2 Answers 2

158

$index is an observable, and observables are functions. When you use observables in an expression you must use the () form to access the value.

<!-- ko if: $index() === 0 -->
Sign up to request clarification or add additional context in comments.

Comments

16

From the knockout bindings page

$index (only available within foreach bindings)

This is the zero-based index of the current array entry being rendered by a foreach binding. Unlike the other binding context properties, $index is an observable and is updated whenever the index of the item changes (e.g., if items are added to or removed from the array).

Example

<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>

Results in

Model #: UAI5021 | Catalog #: UIOY786

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.