web-dev-qa-db-ja.com

ifindexで$ indexを使用するknockout.js

$indexの値に基づいてマークアップを表示しようとしていますが、値を表示することはできますが、ifバインディングで使用できないようです。ここで最善のアプローチは何ですか?

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

$ indexはオブザーバブルであり、オブザーバブルは関数です。式でオブザーバブルを使用する場合、値にアクセスするには()フォームを使用する必要があります。

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

ノックアウトバインディングページ から

$ index(foreachバインディング内でのみ使用可能)

これは、foreachバインディングによってレンダリングされる現在の配列エントリのゼロベースのインデックスです。他のバインディングコンテキストプロパティとは異なり、$ indexは監視可能であり、アイテムのインデックスが変更されるたびに更新されます(たとえば、アイテムが配列に追加または削除された場合)。

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

結果

Model #: UAI5021 | Catalog #: UIOY786
13
JackMorrissey