Javascript 如何在Ember中切换类
我想知道如何在组件中切换类 我的组件有两种状态:活动和非活动。当我想激活它时,我需要添加类Javascript 如何在Ember中切换类,javascript,jquery,ember.js,Javascript,Jquery,Ember.js,我想知道如何在组件中切换类 我的组件有两种状态:活动和非活动。当我想激活它时,我需要添加类active 目前我正在使用jQueryaddClass和removeClass Component.js: SiteApp.BookingBoxComponent = Ember.Component.extend({ actions: { open: function (element) { this.sendAction('open', this.$())
active
目前我正在使用jQueryaddClass
和removeClass
Component.js:
SiteApp.BookingBoxComponent = Ember.Component.extend({
actions: {
open: function (element) {
this.sendAction('open', this.$());
},
close: function (element) {
this.sendAction('close', this.$());
},
}
});
Controller.js:
SiteApp.IndexController = Ember.Controller.extend({
actions: {
open: function (element) {
element.addClass('event--active');
},
close: function (element) {
element.removeClass('event--active');
},
}
});
它正在工作,但我有一种感觉,Ember内置了一些东西,可以帮助实现这一点。请参阅Ember关于的文档。基本上,条件允许您在模板中使用表达式,并在组件/控制器中声明变量。因此,您可以执行以下操作,而不是访问组件/控制器中的DOM(这不是Ember的工作方式):
App.AComponent = Ember.Component.extend({
isOpen: false,
actions: {
open: function (element) {
this.set('isOpen', true);
},
close: function (element) {
this.set('isOpen', false);
}
}
});
在模板中:
<div class="{{if isOpen "event--active"}}">
...
</div>
...
或者您可以这样做
App.AComponent = Ember.Component.extend({
isOpen: false,
actions: {
toggleOpen: function (element) {
this.toggleProperty('isOpen');
}
}
});
哈佛商学院
...
如果这些组件是一堆框,如果其中一个处于活动状态,我想隐藏其他组件,那该怎么办?您可以选择自己的模板帮助器,或者使用类似的工具,为您提供更强大的条件。还有一个疑问。。我不应该在控制器中使用这个吗?并且仅使用组件发送操作?控制器只应处理视图的显示逻辑。对于更通用的逻辑控件,首选模板帮助程序。@celoxxx在控制器使用方面:另外,如果您想要更快更详细的入门帮助,请加入ember社区:
<div class="{{if isOpen 'opened' 'closed'}}">
...
</div>