我开始工作了,因为我怀疑问题出在正确克隆这个对象上。这是我当前的代码,它可以满足我的需要(在我的快速测试中)。我很感激你的建议:
purchaseOrdersCrudController.prototype.copyLineItem = function (lineItem, index, copyAll) {
const self = this;
let elementsToInsert = [];
let newElement = {};
_.forEach(self.model.lineItems, function (value, key) {
if (value.itemId === lineItem.itemId) {
if (copyAll || key === index) {
newElement = Object.assign({}, value);
newElement.priKey = 0;
newElement.qtyRcvd = 0;
elementsToInsert.push(newElement);
}
}
});
let i, startPos;
let len = elementsToInsert.length;
startPos = index + len;
for (i = 0; i < len; i++) {
self.model.lineItems.splice(startPos + i, 0, elementsToInsert[i]);
}
let rn = 0;
len = self.model.lineItems.length;
for (i = 0; i < len; i++) {
if (self.model.lineItems[i].itemId === lineItem.itemId) {
rn++;
if (self.model.lineItems[i].inventId === 0) {
self.model.lineItems[i].rowNumber = 1;
}
else {
self.model.lineItems[i].rowNumber = rn;
}
}
};
this.form.$setDirty();
}