问题如下:在我们的应用程序中,我们有几个按钮、导航图标等,当它们被点击时我们希望它们被“选中”。我们可以同时标记多个元素。
我想要这样做的第二个原因是,当我阅读 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')
})
});
但这就是 View 基本上所做的一切,我想删除整个 View 并为此使用模板
我尝试过使用模板方法,并放弃了整个 View 概念。
<div id="main-menu">
{{#each content}}
<div {{bindAttr class="controller.isSelected:selected"}}>
{{{iconsvg}}}
{{name}}
</div>
{{/each}}
</div>
但是我的问题当然是 bindAttr 不知道它所在的上下文,并且不能将其“发送”到控制器上的 isSelected 属性以评估是否选择了此元素。
有没有一个很好的解决方案可以在没有视图的情况下执行此操作,还是我被迫使用视图?还是我认为模板/视图/控制器的设计部分和责任是错误的?
任何回应表示赞赏!