【问题标题】:Passing a variable to a button's handler将变量传递给按钮的处理程序
【发布时间】:2020-11-18 15:09:03
【问题描述】:

在我的界面中我创建了这个按钮:

{
        xtype: 'button',
        width: 196,
        height: 29,
        hidden: false,
        text: Strings.sharedNotifications,
        glyph: 'xf003@FontAwesome',
        handler: 'onNotificationsClick',
        reference: 'settingsNotificationsButton',
        cls: 'buttonsCls',
         id : 'settingsMenuButton7'
    }

在控制器中,我将此函数定义为上述按钮的处理程序:

 onNotificationsClick: function () {
                Ext.create('Mine.view.BaseWindow', {
                    title: Strings.sharedNotifications,
                    items: {
                        xtype: 'notificationsView'
                    }
                }).show();
            },

我想在面板上应用一个额外的样式(添加一个带有addCls 方法的 CSS 类),它会根据控制器中定义的一些全局变量在点击时显示。如何将变量(比如var dark;)传递给onNotificationsClick,以便在单击时设置面板样式。 谢谢

【问题讨论】:

    标签: extjs extjs5


    【解决方案1】:

    我会在处理程序中触发一个事件。当您触发事件时,您可以传递参数。

    Here is a fiddle.

    【讨论】:

    • 如果我必须在不同的控制器中收听该事件怎么办?事件是否在应用程序中全局化?
    • 我的处理程序也在控制器中(未在按钮对象旁边定义)在这种情况下如何传递button 参数?
    • 我更新了小提琴以显示如何将按钮作为参数传递给事件。至于监听器,我认为控制器只能监听它们视图的子事件。在控制器的“控制”配置中,您使用选择器来定义您希望该控制器侦听的组件和事件。我对小提琴进行了更改以显示这一点。
    • 这里有一些东西要看docs.sencha.com/extjs/7.3.1/guides/application_architecture/…-view_controllers-_listeners_and_event_domains 这谈到了通风口如何冒泡到控制器......所以控制器只能看到它的事件后代
    猜你喜欢
    • 2018-08-03
    • 2019-04-25
    • 2019-04-03
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多