中規模のプロジェクトのテンプレートを作成するのに忙しいです。jqueryテンプレートエンジンでknockoutjsを使用していますが、すべてうまくいっています。いくつかのテンプレートを数レベル深くネストしています。次に、いくつかのテンプレートにオプションのバインディングパラメータを追加したいと思います。これは、htmlテーブル内のルートテンプレートへのバインドです。
<tr data-bind="template: { name: 'RowTextboxTemplate', data: { caption: 'Transporter', property: Transporter } }" />
これはrowtextboxtemplateテンプレートです。
<td data-bind="template: { name: 'CellLabelTemplate', data: { caption: caption, property: property } }" />
<td data-bind="template: { name: 'TextboxTemplate', data: { field: property } }" />
そして、これはサブテンプレートの1つであるtextboxtemplateです。
<input data-bind="value: field, valueUpdate: 'afterkeydown'" type="text">
今、私はこれをしたいと思います:
<tr data-bind="template: { name: 'RowTextboxTemplate', data: { caption: 'Transporter', property: Transporter, readOnly: IsTransporterReadOnly } }" />
ただし、オプションにしたいので、最後のプロパティを省略しても機能します。これが必要な理由は、このパラメーターを必要としないフィールドがたくさんあるため、HTMLが汚染されるためです。ルートテンプレートでこれを試しました:
<td data-bind="template: { name: 'CellLabelTemplate', data: { caption: caption, property: property } }" />
{{if readOnly !== undefined}}
<td data-bind="template: { name: 'CellComboboxTemplate', data: { options: property, selectedValue: selectedValue, optionsText: optionsText, readOnly: readOnly } }" />
{{else}}
<td data-bind="template: { name: 'CellComboboxTemplate', data: { options: property, selectedValue: selectedValue, optionsText: optionsText, readOnly: false } }" />
{{/if}}
次に、readonlyプロパティを子テンプレートのreadonly属性にバインドしましたが、残念ながらこれは機能しません。これを行う別の方法はありますか?