Javascript 为什么我的自定义控件事件未注册?

Javascript 为什么我的自定义控件事件未注册?,javascript,sapui5,Javascript,Sapui5,我在我的应用程序中使用了一个自定义控件,带有一些属性和行为。但是当我想启动一个事件时,它就不起作用了!相反,它说:“壁炉不是一种功能” 下面是我的控件的一些示例代码: sap.ui.core.Control.extend("mycontrols.CustomContent", { metadata: { properties: { enabled: {type: "boolean", defaultValue: true},

我在我的应用程序中使用了一个自定义控件,带有一些属性和行为。但是当我想启动一个事件时,它就不起作用了!相反,它说:“壁炉不是一种功能”

下面是我的控件的一些示例代码:

sap.ui.core.Control.extend("mycontrols.CustomContent", {
    metadata: {

        properties: { 

            enabled: {type: "boolean", defaultValue: true},
            title: {type: "string", defaultValue: null},
            icon: {type: "sap.ui.core.URI", defaultValue: null},                
            size: {type: "sap.ui.core.CSSSize", defaultValue: "200px"}
        }
    },
    // control events
    events: {
        press: {enablePreventDefault : true}
    },

    // browser Events:  
    ontap: function (oEvent) {
        this.firePress({}); // -> not working!
    }

});
我已经了解到,当您声明事件时,UI5框架将自动生成注册(attachYourEvent)、取消注册(detachYourEvent)和触发事件(fireYourEvent)的方法:请参阅

我遗漏了什么?

事实上,这是因为“事件”必须是“元数据”的成员! 因此正确的代码应该是:

sap.ui.core.Control.extend("mycontrols.CustomContent", {
    metadata: {

        properties: { 

            // etc...
        },

        events: {
           press: {}
        }
    },

    // browser Events:  
    ontap: function (oEvent) {
        this.firePress({}); // -> will work now!
    }

});