0

我设法通过我的车把模板将 attributeBinding 设置为控制器上下文:

<li {{bindAttr class="view.controller.isSelected:active:"}}>
    <a href="#" {{action "toggleSelected"}}>{{view.controller.title}}</a>
</li>

在每个组中调用如下:

<ul class="nav nav-tabs nav-stacked">
    {{#each skill in controller}}
        {{view App.SkillView}}
    {{/each}}
</ul>

但是我发现 EmberJS 在每个视图周围添加了 div,这导致我的 CSS 出现问题,所以我li从模板中删除了标签并在 中设置 tagNameSkillView并尝试通过 JS 对象进行属性绑定,该对象在我想要的地方添加了一个 li DOM 元素,但是我使用的属性绑定似乎不起作用:

App.SkillView = Ember.View.extend({
    templateName: 'skill',
    tagName: 'li',
    attributeBindings: ['controller.isSelected:active:']
});

这也不是:

App.SkillView = Ember.View.extend({
    templateName: 'skill',
    tagName: 'li',
    attributeBindings: ['view.controller.isSelected:active:']
});

也不是这个:

App.SkillView = Ember.View.extend({
    templateName: 'skill',
    tagName: 'li',
    attributeBindings: ['isSelected:active:']
});

如何在视图绑定字符串的上下文中从视图中引用控制器?我在车把模板上做什么,我在视图代码中没有做什么?

4

1 回答 1

1

原来我应该使用 classNameBindings 而不是 attributeBindings。以下工作:

App.SkillView = Ember.View.extend({
    templateName: 'skill',
    tagName: 'li',
    classNameBindings: ['controller.isSelected:active:']
});
于 2013-04-25T09:27:17.220 回答