Javascript SAPUI5-Model.Remove生成两个请求
当我对模型(sap.ui.model.odata.v2.ODataModel)执行删除操作时,我目前在SAPUI5编码方面面临一个奇怪的行为。我想实现一个列表,在SelectDialog中显示一些“收藏夹”。通过按下图标,用户可以删除收藏夹。对于项目本身,我使用了FeedListItem,它触发iconPress事件\u handleIconPressDeleteJavascript SAPUI5-Model.Remove生成两个请求,javascript,xml,odata,sapui5,Javascript,Xml,Odata,Sapui5,当我对模型(sap.ui.model.odata.v2.ODataModel)执行删除操作时,我目前在SAPUI5编码方面面临一个奇怪的行为。我想实现一个列表,在SelectDialog中显示一些“收藏夹”。通过按下图标,用户可以删除收藏夹。对于项目本身,我使用了FeedListItem,它触发iconPress事件\u handleIconPressDelete <FeedListItem icon="sap-icon://delete" iconActive="true" iconPr
<FeedListItem icon="sap-icon://delete" iconActive="true" iconPress="_handleIconPressDelete" text="{Name}" sender="{ID}"/>
但当触发此事件时,会生成两个相同的删除请求并导致错误,因为在后端使用当前变更集编码时,我只能同时执行一个请求
奇怪的是,这种行为只有在我第一次打开对话框时才会出现。当我关闭并重新打开它时,一切正常
你有什么想法吗?我在这里可能会做错什么,从而生成两个请求?我还检查了事件是否多次触发,但事实并非如此
作为当前的解决方法,我正在使用如下截图所示的延迟组,以便将两个请求分开,但我认为必须有更好的方法来解决这个问题
_handleIconPressDelete: function(oEvent) {
var oModel = oEvent.getSource().getModel();
oModel.setDeferredGroups(["group1"]);
oModel.remove(oEvent.getSource().getBindingContext().getPath(), {
groupId: "group1",
success: function(data) {
// success handling
},
error: function(e) {
// error handling
}
});
oModel.submitChanges({
groupId: "group1"
});
}
我也遇到过同样的问题,与FeedListItem的iconPress关联的事件会触发两次,尽管用户只单击了一次 下面是一个可以使用自定义编码实现的变通方法
_handleIconPressDelete: function(oEvent) {
if (this._bFirstTrigger) {
var oModel = oEvent.getSource().getModel();oModel.setDeferredGroups(["group1"]);
oModel.remove(oEvent.getSource().getBindingContext().getPath(), {
groupId: "group1",
success: function(data) {
// success handling
},
error: function(e) {
// error handling
}
});
oModel.submitChanges({
groupId: "group1"
});
}
this._bFirstTrigger = false;
}
else{
this._bFirstTrigger = true;
}
this._bFirstTrigger = true;//SETTING FOR THE FIRIST TIME
_handleIconPressDelete: function(oEvent) {
if (this._bFirstTrigger) {
var oModel = oEvent.getSource().getModel();oModel.setDeferredGroups(["group1"]);
oModel.remove(oEvent.getSource().getBindingContext().getPath(), {
groupId: "group1",
success: function(data) {
// success handling
},
error: function(e) {
// error handling
}
});
oModel.submitChanges({
groupId: "group1"
});
}
this._bFirstTrigger = false;
}
else{
this._bFirstTrigger = true;
}