1

我正在尝试实现一些相当简单的事情:使用控制器将事件附加到特定控件,但我正在努力使用 Sencha Architect 来表示这一点。

我有一个名为“登录按钮登录”的按钮。

在我的控制器中,如果我有代码:

config: {
    control: {
        "button": {
            tap: 'onButtonTap'
        }
    }
},

onButtonTap: function(button, e, eOpts) {
    Ext.Msg.alert("onButtonTap fired");
},

该按钮按预期工作。这很好,但显然它将适用于所有按钮。我添加了对“Login-Button-Login”的引用(不是我选择的名称!):

config: {
    refs: {
        loginButtonTap: 'Login-Button-Login'
    },

    control: {
        "button": {
            tap: 'onButtonTap'
        },
        "Login-Button-Login": {
            tap: 'onButtonTap2'
        }
    }
},

但是我现在如何使用引用“loginButtonTap”作为控件对象中的项目?无论我尝试使用 Sencha Architect 控件,最终都会直接引用“Login-Button-Login”。

相关地,如何将此控制器链接到包含按钮的“登录”视图?当然我不需要为每个参考使用完整的选择器吗?显然,即使我可以完成这项工作,它目前也无法发挥作用,因为 Login-Button-Login 需要引用“Login”视图。

4

1 回答 1

1

只需使用控件的id(或itemId)作为controlQuery事件处理程序配置的值:

config: {
    control: {
        "#btnWhatever": {
            tap: 'onWhateverTap'
        },
}

我更喜欢使用这种将事件附加到元素的方法,因为我懒得做双重工作 - 指定对按钮的引用,然后在事件处理程序中指定该引用controlQueryonWhateverTap获取对按钮的引用作为参数,并且大多数时候您在其他任何地方都不需要该引用。

于 2013-08-29T10:13:59.157 回答