我从oModel.getPendingChanges()
获得了三项待定更改,oModel为sap.ui.model.odata.v2.ODataModel
{
{
ASet('id1') : {id: 1}
},
{
BSet('id1') : {id: 1}
},
{
CSet('id1') : {id: 1}
}
}
我只想提交ASet。 B和C的变化来自ComboBox的选择。我有三个相互关联的ComboBox。我用绑定来解决这个问题。
<ComboBox
id="theSecondSelect"
selectionChange="onChange"
enabled="false"
showSecondaryValues="true"
value="{
path: 'propertySetId',
type: '.Utils.mandatoryValueType'}">
</ComboBox>
<items>
在控制器中动态绑定。
我甚至尝试过
for(var sBindingPath in oChanges) {
if(sBindingPath.indexOf("ASet") === -1) {
delete oModel.mChangedEntities[sBindingPath];
}
}
console.log(oModel.getPendingChanges());
我可以看到挂起的更改已被删除,但仍然发送了三个请求。
有什么建议吗?
更新:
按
删除待处理的更改_resetSelectChanges: function() {
var oChanges = this._oModel.getPendingChanges();
for (var sBindingPath in oChanges) {
if (sBindingPath.indexOf("ControlIoTImplementationSet") === -1) {
this._oModel.resetChanges(["/" + sBindingPath]);
}
}
}
但是在关闭表单对话框后它会再次出现。
答案 0 :(得分:3)
请参阅resetChanges
方法http://www.parfumeriafox.sk/encoding.php的API说明。
该方法将字符串数组作为参数。每个字符串都是应该重置的实体的路径。
示例电话:
oModel.resetChanges(["/BSet('id1')", "/CSet('id1')"]);
这会重置两个给定实体的更改。因此,只应提交对ASet('id1')
实体的更改。