【发布时间】:2016-07-03 13:58:01
【问题描述】:
如何从普通的旧 html 链接触发事件(我想切换卡片视图)?
如果我在控件部分按 ID 引用链接,似乎没有触发我尝试过的任何事件(单击、点击)。
谢谢!
【问题讨论】:
-
请分享您的代码
标签: extjs sencha-touch sencha-touch-2
如何从普通的旧 html 链接触发事件(我想切换卡片视图)?
如果我在控件部分按 ID 引用链接,似乎没有触发我尝试过的任何事件(单击、点击)。
谢谢!
【问题讨论】:
标签: extjs sencha-touch sencha-touch-2
渲染链接后,您可以通过这种方式添加事件监听器:
Ext.get('[link id here]').on('click', function(){...}, this);
更新
如果您想在用户单击超链接后触发事件,您可以简单地添加this.fireEvent('[name of event here]');,但请注意此函数中的this 关键字含义,这样您就可以正确添加监听器。 ..有意义吗?
【讨论】:
main = this.getIntroView();main.setActiveItem({xtype: intro});
Ext.get。即不是在init 中进行事件订阅,而是在onRender 中进行事件订阅,或者在main 中订阅'afterrender' 事件。
向包含链接的面板添加点击监听器。在示例中,标签具有“链接”类。你可以用你自己的 class/id 替换它,就像在 jQuery 中所做的那样。
listeners: {
scope: this,
itemtap: this.onItemtapAction,
click: {
element: 'el',
fn: function (e) {
if (e.getTarget('a.link')) {
// Switch cards here
}
}
}
【讨论】:
我使用简单的 Java 脚本为链接添加了一个监听器。
首先,我为容器组件创建了一个“激活”监听器:
...
listeners: {
activate: function (newActiveItem, container, oldActiveItem, eOpts) {
this.onActivate(newActiveItem, container, oldActiveItem, eOpts);
}
}
...
这是我的功能:
onActivate: function (newActiveItem, mainNavView, oldActiveItem, eOpts) {
var me = this;
document.getElementById('logOutLink').addEventListener("click",
function(){
me.onLogOut();
}, false);
},
onLogOut:function(){
alert('log out');
}
【讨论】: