首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >成员js -单击按钮上的其他元素上的触发器单击事件

成员js -单击按钮上的其他元素上的触发器单击事件
EN

Stack Overflow用户
提问于 2017-11-06 08:12:48
回答 2查看 946关注 0票数 0

My Requirement:我使用的是一个自定义选项卡组件,它有3-4个选项卡,还有下一个选项卡上的按钮。我想切换标签时,单击下一步,前几个按钮。

我的方法:当单击next按钮时,试图在选项卡上触发单击事件,通常情况下,当我们单击相关选项卡内容显示的选项卡时。

我也可以用jquery做同样的事情,但是我们如何在ember中做到这一点呢?我使用的是余烬2.16。有人能在这方面提供帮助或建议是否有更好的方法来实现这一要求。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-11-06 09:45:29

代码语言:javascript
复制
My-component.hbs

<ul class="my-tabs">

   <li class="{{if tabs.firstTab 'active' ''}}" {{action 'switchTab' 'firstTab'}}>Tab1</li>
   <li class="{{if tabs.secondTab 'active' ''}}" {{action 'switchTab' 'secondTab'}}>Tab2
   </li>

</ul>
{{#if tabs.firstTab}}
   //content for first tab
{{/if}}
{{#if tabs.secondTab}}
   //content for second tab
{{/if}}

My-component.js

代码语言:javascript
复制
tabs:{
  firstTab:false,
  secondTab:false,

},
actions:{

  switchTab(currentTab){
     this.get('tabs').setProperties({
       firstTab:false,
       secondTab:false
     });
     this.get('tab').set(''+currentTab,true);

  }

}

你可以做这样的事。如果不希望变量tabs,那么使用javascript将类添加到当前单击的选项卡中,并删除现有的active选项卡。如果还需要什么,请告诉我。

票数 1
EN

Stack Overflow用户

发布于 2017-11-18 21:20:08

如果您只是想让不同的选项卡知道哪个是活动的,那么创建一个tab对象:

Ember.Object.extend({ activeTab: null, tabId: null, isActive: Ember.computed('activeTab', 'tabId', function(){ return this.get('activeTab.tabId') === this.get('tabId'); }) })

然后在您的控制器中,创建您的选项卡,并将它们全部传递给active选项卡。单击按钮时更新活动选项卡,并按单击下一个/前一个按钮的顺序更新。在更改active选项卡时,所有按钮都会触发计算属性,询问它们是否是活动的,其中一个将是活动的。

您还可以避免计算属性,只需遍历每个选项卡,并按照上面的计算属性中提到的相同逻辑更新isActive属性:this.get('tabs').forEach(function(tab){ tab.set('isActive', tab.tabId === self.get('ctrl.activeTab.tabId')); });

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

https://stackoverflow.com/questions/47132383

复制
相关文章

相似问题

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