あなたがすべきことは、2つの「テンプレート」を実際のテンプレートに入れ、使用するテンプレートを決定する計算されたオブザーバブルを追加することです。これは、テンプレートが非常に複雑な場合や、表示する可能性のあるさまざまなテンプレートがある場合に特に役立ちます。
たとえば、ユーザーがいるとします。
function User(user) {
this.name = ko.observable(user.name);
this.isSuperUser = ko.observable(user.isSuperUser);
// this chooses which template to use
this.userTemplate = ko.computed(function () {
return this.isSuperUser()
? "userTemplate-superuser"
: "userTemplate-user";
}, this);
}
ユーザーのリストがあれば、それが何であるかに基づいて適切なテンプレートを表示できますuserTemplate
。
<div data-bind="foreach: users">
<div data-bind="template: userTemplate"></div>
</div>
<script id="userTemplate-superuser" type="text/html">
<div class="su">
Greetings super user <span data-bind="text: name"></span>
</div>
</script>
<script id="userTemplate-user" type="text/html">
<div class="u">
Greetings regular user <span data-bind="text: name"></span>
</div>
</script>
デモ