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

时间:2015-04-28 22:05:29

标签: javascript sapui5

我在我的应用中使用自定义控件,具有一些属性和行为。但是,当我想发射一个事件时,它不起作用!相反,它说:“firePress不是一个功能”。

以下是我控制的一些示例代码:

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)的方法:见SAPUI5 custom pseudo-event

我错过了什么?

1 个答案:

答案 0 :(得分:2)

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

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

        properties: { 

            // etc...
        },

        events: {
           press: {}
        }
    },

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

});