在我的组件的didInsertElement()方法中,我为Bootstraps的选项卡组件注册了事件处理程序:
didInsertElement() {
this._super(...arguments);
console.log('didInsertElement....');
console.log(this.$("a[data-toggle='tab']"));
this.$('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
console.log('TAB SHOWN....');
console.log(e);
});
}
但是,我的处理程序没有执行。我在浏览器的控制台上复制了相同的处理程序代码,它可以工作这似乎只是在Bootsrap选项卡的情况下。我的控制台消息的外观确认didInsertElement()工作正常。
答案 0 :(得分:2)
这是一个尝试的清单:
click
处理程序激活了选项卡。$('#someTab').tab('show')
以查看是否有任何事情发生e.preventDefault()
,就像点击处理程序一样?由于制表符是锚标记,有时会出现一些奇怪的行为。我强烈建议在常规Bootstrap上使用ember-bootstrap。 JQuery监听器会降低您的应用程序速度,并且直接对DOM进行修改将在边缘条件下失败或导致应用程序的其他部分以意外方式中断。
此答案适用于至少1.13版,并且是从3.1
开始编写的