2015-04-28 2 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! 
    } 

}); 
Смежные вопросы