次の Ember.View を定義しました。
App.ControlGroup = Ember.View.extend
classNames: ['control-group']
layoutName: 'controlGroup'
レイアウト テンプレート (controlGroup.handlebars) は次のようになります。
<label class="control-label">{{ view.label }}</label>
<div class="controls">
{{ yield }}
</div>
上記で定義したビューを使用する例を次に示します。
{{#view App.ControlGroup label="Property code"}}
{{#if isNew}}
{{view Em.TextField valueBinding="code"}}
{{else}}
<p>{{code}}</p>
{{/if}}
{{/view}}
これにより、次の html が生成されます。
<div id="ember10170" class="ember-view control-group">
<label class="control-label">Property code</label>
<div class="controls">
<input id="ember10172" class="ember-view ember-text-field" type="text">
</div>
</div>
これはまさに私が欲しいものです。ただし、テンプレートでビューの属性を使用すること ({{ view.label }}
上記の controlGroup.handlebars }} を参照) はアンチパターンであり、プロパティのルックアップはビューのコントローラーから取得する必要があることを学びました。だから、それについてどうやって行くのだろうか。この場合、プロパティはビュー (html スニペット) 自体に関連しているため、私の実装は正当に思えますが、他のアプローチを見てみたいと思っています。