カスタム テンプレートknockout.js
を使用してマップされた配列が与えられた場合、配列内の各項目を別のテンプレートを使用してレンダリングするにはどうすればよいでしょうか?
これは、希望する機能のjsFiddle の例へのリンクです。
簡単に言えば、次のような配列が与えられます。
people: ko.observableArray([
{ name: 'Rod', age: 123, template: 'personItem' },
{ name: 'IBM', incorporated: 1911, template: 'corporateItem' },
])
foreach:
一部のアイテムには 1 つのテンプレートを使用し、他のアイテムには異なるテンプレートを使用するバインディングを設定するにはどうすればよいでしょうか。
(注: アンダースコア テンプレートを使用すると問題が混同されることは承知しており、不必要な混乱を招いてしまったことをお詫びします。)
if
次のように、テンプレートの種類ごとに 1 つのバインディングのセットで 1 つのテンプレートを使用することを考えました。
<div data-bind='foreach: people'>
<div data-bind='if: people.template() == "personItem"'>
</div>
<div data-bind='if: people.template() == "corporateItem"'>
</div>
</div>
これは非常に洗練されていないように思えます。私は、よりエレガントでかなり単純なオプションがあると思います (希望します)。
どんな考えでも大歓迎です。読んでくれてありがとう。