首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sapui5 CustomTreeItem如何删除树结构中的项

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

Stack Overflow用户
提问于 2019-05-07 12:15:05
回答 1查看 407关注 0票数 0

在删除嵌套JSON结构中的对象时,我遇到了一个问题。

如果您看到上面的图片,用户可以选择添加项目或删除项目。

您可以删除一个项目(它可能是父项或子项)。如果要删除父项,则相应的子项也应被删除。如果删除最后一项(Tile3),则只应删除该项。

下面是我正在尝试的代码。

XML::

代码语言:javascript
复制
<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>

主计长:

代码语言:javascript
复制
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);
}

在aData中,im能够获得所选的对象数据。但是,如何删除所选对象并再次在模型中形成更新的JSON数据?

有谁能帮我解决这个问题吗?

谢谢你提前..。

EN

回答 1

Stack Overflow用户

发布于 2019-05-07 15:23:00

修正了下面的代码问题..。

代码语言:javascript
复制
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);
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56022438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档