简体   繁体   English

sapui5 CustomTreeItem如何删除树结构中的项目

[英]sapui5 CustomTreeItem How can i delete an item in the Tree Structure

I have an issue in deleting an object in Nested JSON Array Structure. 我在删除嵌套JSON数组结构中的对象时遇到问题。 在此输入图像描述

If you see the above pic, User has an option to add an Item or Delete an Item. 如果您看到上面的图片,用户可以选择添加项目或删除项目。

You can delete an item(it might be parent or child). 您可以删除项目(可能是父项或子项)。 If you are deleting parent Item then corresponding children should also get deleted. 如果要删除父项,则也应删除相应的子项。 If you delete last Item(Tile3) only that item should get deleted. 如果删除最后一个项目(Tile3),则只删除该项目。

Below is the code im trying with .. 以下是我试用的代码..

XML :: XML ::

<Tree items="{path : 'selModel>/',parameters: { numberOfExpandedLevels: 4}}" toggleOpenState="expandCollapseTree" id="Tree" class="sapUiTinyMarginTop tilesClass selTree">
    <dragDropConfig>
        <dnd:DragDropInfo sourceAggregation="items" targetAggregation="items" dragStart="onDragStart" drop="onDrop"/>
    </dragDropConfig>
    <CustomTreeItem id="treeItem" detailPress="pressCustomTreeItem">
        <VBox class="customSelTile" id="customSelTile">
            <HBox>
                <HBox width="100%">
                    <VBox visible="{= ${selModel>enabled} ? false: true }" class="sapUiTinyMarginTop customTxts">
                        <Label class="sapUiSmallMarginBegin headTxtFont" text="{selModel>text}"/>
                        <Label class="sapUiSmallMarginBegin subHeadTxtFont" text="{selModel>subheader}"/>
                    </VBox>
                    <VBox visible="{selModel>enabled}" class="sapUiTinyMarginTop customTxts">
                        <Input class="sapUiSmallMarginBegin headTxtFont" value="{selModel>text}"/>
                        <Input class="sapUiSmallMarginBegin subHeadTxtFont" value="{selModel>subheader}"/>
                    </VBox>
                </HBox>
                <Button class="sapUiTinyMarginBegin sapUiTinyMarginTop" press="addTile" icon="sap-icon://add"/>
                <Button class="sapUiTinyMarginBegin sapUiTinyMarginTop sapUiTinyMarginEnd" press="removeTile" icon="sap-icon://less"/>
            </HBox>
        </VBox>
    </CustomTreeItem>
</Tree>

Controller :: 控制器::

removeTile: function (oEvt) {

    var _oItem = oEvt.getSource().getParent().getParent().getParent();
    var _sBindingPath = _oItem.getBindingContextPath();
    var _oModel = this.getView().getModel("selModel");
    var aData = _oModel.getProperty(_sBindingPath);
}

In aData im able to get the selected object data. 在aData中我能够获取所选的对象数据。 But how can i delete the selected object and again form the updated JSON data in the model? 但是,如何删除所选对象并再次在模型中形成更新的JSON数据?

Can some one please help me with any solution? 有人可以帮我解决任何问题吗?

Thank you in advance.. 先感谢您..

Fixed the issue with below code... 修复了以下代码的问题......

removeTile: function(oEvt) {
    var _oItem = oEvt.getSource().getParent().getParent().getParent();
    var _sBindingPath = _oItem.getBindingContextPath();
    var _oModel = this.getView().getModel("selModel");
    var _aDataToDelte = _oModel.getProperty(_sBindingPath);
    var oModelData = _oModel.getData();
    this._deleteRecord(oModelData, _aDataToDelte);
    _oModel.setData(oModelData);
},
_deleteRecord: function(items, record) {
    if (items !== undefined) {
        for (var i = 0; i < items.length; i++) {
            if (items[i] === record) {
                items.splice(i, 1);
                break;
            } else {
                this._deleteRecord(items[i].nodes, record);
            }
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM