在 SAPUI5/OpenUI5 中定义自定义伪事件的最佳实践是什么?
例如,假设我想在一个扩展的 sap.m.Button 上触发一个事件,并按住几秒钟。
最佳答案
我不确定是否有任何“最佳实践”,我真的认为只有“一个”实践 ;-) 但我很想学习任何其他方法,所以如果有人可以对此发表评论,请不要犹豫!
我认为总体思路只是定义您的事件; UI5 框架随后会自动生成用于注册 (attach<YourEvent>
)、取消注册 (detach<YourEvent>
) 和触发事件 (fire<YourEvent>
) 的方法。
例如:
return ControlToExtend.extend("your.custom.Control", {
metadata: {
properties: {
// etc...
},
aggregations: {
"_myButton": {
type: "sap.m.Button",
multiple : false,
visibility: "hidden"
},
// etc...
},
associations: {
// etc...
},
events: {
yourCustomEvent: {
allowPreventDefault: true,
parameters: {
"passAlong": { type: "string" }
}
}
}
},
init: function() {
ControlToExntend.prototype.init.apply(this, arguments);
var oControl = this, oMyButton;
oMyButton = new Button({ // Button required from "sap/m/Button"
// ...,
press: function (oEvent) {
oControl.fireYourCustomEvent({
passAlong: "Some dummy data to pass along"
});
}
});
this.setAggregation("_myButton", oMyButton);
},
// etc...
});
希望这能解释一下。
关于SAPUI5 自定义伪事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22505486/