我需要捕获用户在SAP UI5应用上执行的事件,并在需要时回放相同的事件。
我开发了一个小型的UI5应用程序,其中几乎没有文本字段,按钮和链接。我正在使用DOM事件捕获事件。我将元素ID和命令类型(单击,输入)保存在本地JSONModel中。需要播放时,我将使用保存的数据再次执行相同的事件。
我能够捕获和回放文本输入字段,但是当我单击按钮或回放中的链接时,它单击了按钮,但是在按钮按下事件时不调用控制器中定义的功能。
有人可以帮我吗?在下面的示例中,在回放过程中,单击提交按钮可以正常工作,但不会调用控制器中定义的功能。
var Submit = new sap.m.Button("Submit", {
text: 'Submit',
enabled: true,
press: function(oEvt) {
oController.OnPressSubmit(oEvt);
}
});
OnPressSubmit: function(oEvt){ /* Perform action */ }
另一个.js文件注入了索引文件,捕获了如下事件
document.addEventListener("input", myInputFunction);
function myInputFunction(evt) {
if (event.target.localName.length > 0) {
recordingData.push({
"type": event.target.localName,
"command": event.type,
"name": event.target.id,
"value": event.target.value
});
}
sendData(recordingData);
};
function playDataBack(Data) {
for (var i = 0; i < playbackData.length; i++) {
if (playbackData[i].command == 'input');
document.getElementById(playbackData[i].name).value = playbackData[[i]].value;
if (playbackData[i].command == 'click') {
var targBtn = document.querySelector ("#" + playbackData[i].name);
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
targBtn.dispatchEvent (clickEvent);
}
};
}
答案 0 :(得分:0)
您是否在按钮创建之外添加了以下代码?
oController = this;
完成此分配后,您可以创建按钮,并且oController
将在'press'事件中显示。
var Submit = new sap.m.Button("Submit", {
text: 'Submit',
enabled: true,
press: function(oEvt) {
oController.OnPressSubmit(oEvt);
}
});
顺便说一句,并不是说它对您的代码本身没有任何作用,但是如果您遵循命名约定,我建议您以小写字母开始函数/方法:)
K,
克里斯托夫