KnockoutJS はこのように DOM を操作しません。jquery またはネイティブ js document.createElement('User Details etc') を使用して、ユーザー div の間に追加できます。ノックアウトでこの動作に最も近いのはIF
バインディングです。最後に解説。それでも、最初に定義する必要があり、ノックアウトはそれを制御できます。
ノックアウトの方法では、可視性から始めることができます:
<div>user 1</div>
<div data-bind="visible: selectedUser() == user1">User 1 Details etc</div>
<div>user 2</div>
<div data-bind="visible: selectedUser() == user2">User 2 Details etc</div>
<div>user 3</div>
<div data-bind="visible: selectedUser() == user3">User 3 Details etc</div>
または、ループ内で:
<!-- ko foreach: users -->
<div data-bind="text: $data.userName"></div>
<div data-bind="visible: $parent.selectedUser() == $data.userName, text: $data.userDetails"></div>
<!-- /ko -->
これらの div を DOM から除外したい場合は、に変更visibility
しif
ます。ノックアウトのウェブサイトより:
if は、目に見えるバインディングと同様の役割を果たします。違いは、visible の場合、含まれるマークアップは常に DOM に残り、常にそのデータ バインド属性が適用されることです。visible バインディングは、CSS を使用してコンテナー要素の可視性を切り替えるだけです。ただし、if バインディングは、DOM に含まれるマークアップを物理的に追加または削除し、式が true の場合にのみバインディングを子孫に適用します。
ドキュメントで詳細を読むことができます: http://knockoutjs.com/documentation/if-binding.html
編集: および変更した JSfiddle: http://jsfiddle.net/XwcK9/1/