Javascript 将数组结果从一个json对象移动到另一个json对象
我在_initializeData中创建了一个新的json数据模型。目的是当用户试图删除购物车中的项目时,我想将该项目存储在这个新的数据模型中。因此,单击remove按钮,我将读取包含购物车中所有项目的json数据模型,然后使用已删除元素的索引将结果复制到新模型中。如果我只删除一个项目,效果很好。但如果我在另一项上按remove,则新模型中的前一项会被新项覆盖。它不像数组那样保存所有条目Javascript 将数组结果从一个json对象移动到另一个json对象,javascript,sapui5,Javascript,Sapui5,我在_initializeData中创建了一个新的json数据模型。目的是当用户试图删除购物车中的项目时,我想将该项目存储在这个新的数据模型中。因此,单击remove按钮,我将读取包含购物车中所有项目的json数据模型,然后使用已删除元素的索引将结果复制到新模型中。如果我只删除一个项目,效果很好。但如果我在另一项上按remove,则新模型中的前一项会被新项覆盖。它不像数组那样保存所有条目 _initializeData: function () { var removedData
_initializeData: function () {
var removedData = {}; // new model for removed parts
removedData.removedParts = [];
this.removedItems = new JSONModel(removedData);
this.getView().setModel(this.removedItems, "removedItems");
}
// button click
onRemovePart: function (oEvent) {
var idx = this.getView().byId("table").getSelectedIndex();
// retrieveing the model which has all the parts from the table
var data = this.getView().getModel("materialData").getProperty("/partsData");
// reading the removed item data
var removedPart = data[idx];
// assigning it to the new model. But it does not hold multiple
entries rather over-writes the previous one
this.getView().getModel("removedItems").setProperty("/removedParts", removedPart);
使用
Array.slice()
避免引用。这里,引用导致重写行为问题是您正在重写模型上的完整对象:removedItems
由于您覆盖了它,旧数据将丢失。因此,您所需要做的就是获取旧的已删除项数组,将元素推入其中,然后将其设置为model
_initializeData: function () {
var removedData = {}; // new model for removed parts
removedData.removedParts = [];
this.removedItems = new JSONModel(removedData);
this.getView().setModel(this.removedItems, "removedItems");
}
// button click
onRemovePart: function (oEvent) {
var idx = this.getView().byId("table").getSelectedIndex();
// retrieveing the model which has all the parts from the table
var data = this.getView().getModel("materialData").getProperty("/partsData");
// reading the removed item data
var removedPart = data[idx];
// assigning it to the new model. But it does not hold multiple
entries rather over-writes the previous one
// Get the old deleted items first :
var oDeletedItems = this.getView().getModel("removedItems").getProperty("/removedParts");
oDeletedItems.removedParts.push(removedPart); // the array is removedParts and oDeletedItems is the obejct which stores the array as per _initlaise method
this.getView().getModel("removedItems").setProperty("/removedParts", oDeletedItems);
希望这能有所帮助。我做了以下操作,但仍然重写了它,并且只存在一个条目var idx=this.getView().byId(“表”).getSelectedIndex();var data=this.getView().getModel(“orderParts”).getProperty(“/orderPartsData”);移除的var=数据拼接(idx,1);this.removedItems.setProperty(“/removedParts”,已删除);你能帮我解决这个问题吗