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

如果您看到上面的图片,用户可以选择添加项目或删除项目。
您可以删除一个项目(它可能是父项或子项)。如果要删除父项,则相应的子项也应被删除。如果删除最后一项(Tile3),则只应删除该项。
下面是我正在尝试的代码。
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>主计长:
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数据?
有谁能帮我解决这个问题吗?
谢谢你提前..。
发布于 2019-05-07 15:23:00
修正了下面的代码问题..。
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);
}
}
}
}https://stackoverflow.com/questions/56022438
复制相似问题