是否可以从html字符串内的href标记调用控制器函数? ...我似乎什么也没用,所以我想我可能做错了。
我正在使用ExtJS 6.6
我有一些用户信息,然后有一个注销链接,但是什么也没用,这就是我所拥有的。
items: [{
region: 'north',
height: 200,
items: [{
xtype: 'panel',
layout: 'column',
items: [{
xtype: 'panel',
columnWidth: 0.3
}, {
xtype: 'panel',
columnWidth: 0.7,
html: '<div class="userstuff" style="text-align: right;">Hello, welcome to my page<br /><a href="#" class="logout">Log out</a></p></div>'
}]
}]
}]
我无法忍受的是;
<a href="#" class="logout">Log out</a>
如果我使用按钮xtype,则可以通过处理程序调用它,并且效果很好,但是现在我需要将其更改为文本链接。
这是有效的按钮代码;
{
xtype: 'button',
text: 'Logout',
handler: 'onLogout'
}
任何帮助获得此文本链接以致电onLogout
的人,都是很棒的。
谢谢
答案 0 :(得分:1)
您可以使用onLogout
呼叫Event delegation
。您需要像这样在panel
上附加侦听器
{
xtype: 'panel',
listeners: {
element: 'el',
delegate: 'a.logout',
click: 'onLogoutClick'
}
}
您可以在这里使用fiddle进行检查。
代码段
Ext.define('MyViewController', {
extend: 'Ext.app.ViewController',
alias: 'controller.myview',
/**
* This event will fire on Logout click
*/
onLogoutClick: function(e) {
console.log(e);
Ext.Msg.alert('Success', 'You have clicked on logout button');
}
});
Ext.create({
xtype: 'panel',
title: 'Running a controller function from an ExtJS 6.6 href link',
layout: 'border',
controller: 'myview',
height: 200,
items: [{
region: 'north',
height: 200,
items: [{
xtype: 'panel',
layout: 'column',
items: [{
xtype: 'panel',
columnWidth: 0.3
}, {
xtype: 'panel',
columnWidth: 0.7,
listeners: {
element: 'el',
delegate: 'a.logout',
click: 'onLogoutClick'
},
html: '<div class="userstuff" style="text-align: right;">Hello, welcome to my page<br /><a href="#" class="logout">Log out</a></p></div>'
}]
}]
}],
renderTo: Ext.getBody()
});