2015-04-28 88 views
1

我在我的應用程序中使用自定義控件,具有一些屬性和行爲。但是當我想發起一個事件時,它不起作用!相反,它說:「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

我錯過了什麼?

回答

2

其實,這是因爲「事件」必須是「元數據」的成員! 所以正確的代碼是:

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

     properties: { 

      // etc... 
     }, 

     events: { 
      press: {} 
     } 
    }, 

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

}); 
相關問題