首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在EMB2.0组件中创建动态classNames?

如何在EMB2.0组件中创建动态classNames?
EN

Stack Overflow用户
提问于 2016-01-26 17:37:50
回答 5查看 8.6K关注 0票数 9

例如: Ember允许您添加一个classNames数组,这些类将被添加到组件的主div中。假设我们有一个名为new-div的组件

代码语言:javascript
复制
export default Ember.Component.extend({
    classNames: ['container']
});

然后,如果您在呈现时检查此组件,您将看到:

代码语言:javascript
复制
<div id="ember595" class="ember-view container">
...
<div>

这是好的,但我的问题是,如果我想使用这个组件作为流体容器,有时,有时,我可能想让它成为一个巨型加速器等。

有什么方法可以在html中这样做,并让component.js正确地应用它吗?

代码语言:javascript
复制
{{new-div extra-classes='class1,class2'}}

然后在component.js中:

代码语言:javascript
复制
export default Ember.Component.extend({
    classNames: [this.get('class-names')]
});
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-01-26 17:52:44

只需在组件上的class属性中指定类名,就可以添加类名:

代码语言:javascript
复制
{{new-div class="class1 class2"}}
票数 13
EN

Stack Overflow用户

发布于 2016-03-07 13:07:12

@dmk‘解是最干净的,但是如果您的场景不起作用,您可以使用classNameBindings

代码语言:javascript
复制
export default Ember.Component.extend({
  classNameBindings: ['getClassNames'],
  getClassNames: Ember.computed('extra-classes', function(){
    return this.get('extra-classes').replace(',', ' ');
  })
})
票数 14
EN

Stack Overflow用户

发布于 2019-05-07 06:25:10

如果没有添加太多的类,那么类名绑定就足够容易了:

代码语言:javascript
复制
export default Ember.Component.extend({
  classNameBindings: [
    'foo:bar',
    'foo:baz',
  ],
});

并设置foo的值:

{{new-div foo=true}}

这将对所有上述类名进行切换。

请参阅:https://api.emberjs.com/ember/release/classes/Component/properties/classNameBindings?anchor=classNameBindings

当然,计算属性和映射数组可能会变得很棘手。另外:我喜欢避免显式地为组件分配动态类名。事情很快就会变得一团糟。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35020230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档