javascript - 从 ExtJS 6.6 href 链接运行 Controller 功能

标签 javascript extjs extjs6 extjs6-classic

是否可以从 html 字符串中的 href 标签调用 Controller 函数? ...我似乎什么都做不了,所以我想我可能做错了什么。

我正在使用 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 的任何帮助都会很棒。

谢谢

最佳答案

您可以使用事件委托(delegate)调用onLogout。您需要像这样在面板上附加监听器

{
    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()
});

关于javascript - 从 ExtJS 6.6 href 链接运行 Controller 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52980018/

相关文章:

java - 如何从Mysql中的所有表中删除一条唯一记录

javascript - 简单的游戏循环 Socket.io + Node.js + Express

javascript - 如何在继续之前等待所有文件被读取并执行所有回调

javascript - Jest 中的 'it' 和 'test' 有什么区别?

css - Sencha 应用程序构建和图表 CSS

javascript - Ext.form.field.Text 上的 extjs 键盘映射

javascript - 可以在 Ext JS 中将 XML 响应作为流读取吗

javascript - Extjs 6 : Adding modal window doesn't mask tbar and header

javascript - 网格面板中的动态单元格编辑器

Extjs 6 使用 Ext.define 定义一个链式商店