如何删除ui5中的待定更改?

时间:2017-11-18 09:31:21

标签: sapui5

我从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]);
        }
    }
}

enter image description here

但是在关闭表单对话框后它会再次出现。

enter image description here

1 个答案:

答案 0 :(得分:3)

请参阅resetChanges方法http://www.parfumeriafox.sk/encoding.php的API说明。

该方法将字符串数组作为参数。每个字符串都是应该重置的实体的路径。

示例电话:

oModel.resetChanges(["/BSet('id1')", "/CSet('id1')"]);

这会重置两个给定实体的更改。因此,只应提交对ASet('id1')实体的更改。