問題は次のとおりです。このアプリケーションには、いくつかのボタン、ナビゲーションアイコンなどがあり、クリックされたときに「選択」されます。複数の要素を同時にマークすることができます。
これを実行したい2番目の理由は、emberjs.comで新しいガイドを読んだときに、テンプレートは以前に述べた以上に使用する必要があり、テンプレートはDOMをレンダリングする責任があり、ビューは高度なイベント(存在する場合)を処理するため、またはアプリケーションで再利用される共通/共有コンポーネントを作成するために使用されます。
現在、ビューはこれを処理しています。
app.NavView = Ember.CollectionView.extend({
...
itemViewClass: Ember.View.extend({
...
classNameBindings: ['isSelected:selected']
isSelected: function () {
return this.get('controller.selected') === this.get('content');
}.property('controller.selected')
})
});
ただし、ビューが基本的に実行しているのはこれだけです。ビュー全体を削除して、このためのテンプレートを使用したいと思います。
テンプレートアプローチを試してみて、ビューの概念全体を削除しました。
<div id="main-menu">
{{#each content}}
<div {{bindAttr class="controller.isSelected:selected"}}>
{{{iconsvg}}}
{{name}}
</div>
{{/each}}
</div>
しかし、ここでの私の問題は、bindAttrがコンテキストを認識しておらず、これをコントローラーのisSelectedプロパティに「送信」して、この要素が選択されているかどうかを評価できないことです。
ビューなしでこれを行うための良い解決策はありますか、それともビューを使用することを余儀なくされていますか?それとも、テンプレート/ビュー/コントローラーの設計部分と責任が間違っていると思いますか?
どんな反応でも大歓迎です!