【问题标题】:How to toggle class in Ember如何在 Ember 中切换类
【发布时间】:2015-10-26 12:05:57
【问题描述】:

我正在尝试弄清楚如何在组件中切换类。

我的组件有两种状态:活动和非活动。当我想激活它时,我需要添加类active

目前我正在使用 jQuery addClassremoveClass

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 有一些内置的东西可以帮助解决这个问题。

【问题讨论】:

    标签: javascript jquery ember.js


    【解决方案1】:

    或者你可以这样做

    App.AComponent = Ember.Component.extend({
        isOpen: false,
    
        actions: {
            toggleOpen: function (element) {
                this.toggleProperty('isOpen');
            }
        }
    });
    

    血红蛋白

    <div class="{{if isOpen 'opened' 'closed'}}">
        ...
    </div>
    

    【讨论】:

      【解决方案2】:

      请参阅 Ember 在 Templates: Conditionals 上的文档。本质上,条件允许您在模板中使用表达式以及在组件/控制器中声明的变量。因此,您可以执行以下操作,而不是访问组件/控制器中的 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>
      

      【讨论】:

      • 如果这个组件是一堆盒子,如果一个是活动的,我想隐藏其他的呢?
      • 您可以修改自己的模板助手,也可以使用类似github.com/jmurphyau/ember-truth-helpers 的东西,它可以为您提供更强大的条件。
      • 还有一个疑问..我不应该在控制器中使用它吗?并且只使用组件来发送操作?
      • 控制器只应该处理视图的显示逻辑。对于更通用的逻辑控制,模板助手是首选。
      • @celoxxx 在控制器使用方面:youtube.com/… 此外,如果您想要更快、更详细的入门帮助,请加入 ember-community slack:ember-community-slackin.herokuapp.com
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      相关资源
      最近更新 更多