0
在我的小提琴,你可以從一個列表複製到另一個項目,也就是持有普通的物品,用於比較的複製列表。現在,您可以刪除第二個列表中的所有項目,但我只希望能夠刪除那些包含普通項目的項目。從列表中刪除的項目,如果在比較列表不存在
代碼如下所示:
var SProcsViewModel = function() {
var self = this;
self.storedProceduresInDB1 = ko.observableArray([{
Name: "Sp1",
Id: 1
}, {
Name: "Sp2",
Id: 2
}, {
Name: "Sp3",
Id: 3
}, {
Name: "Sp4",
Id: 4
}]);
self.storedProceduresInDB2Orig = ko.observableArray([{
Name: "Sp3",
Id: 3
}, {
Name: "Sp4",
Id: 4
}, {
Name: "Sp7",
Id: 7
}, {
Name: "Sp8",
Id: 8
}]);
self.storedProceduresInDB2 = ko.observableArray([{
Name: "Sp3",
Id: 3
}, {
Name: "Sp4",
Id: 4
}, {
Name: "Sp7",
Id: 7
}, {
Name: "Sp8",
Id: 8
}]);
self.selectedStoredProceduresInDb1 = ko.observableArray();
self.selectedStoredProceduresInDb2 = ko.observableArray();
self.copyToDb2 = function() {
var sprocs = [];
console.log('self.selectedStoredProceduresInDb1()', self.selectedStoredProceduresInDb1());
ko.utils.arrayForEach(self.selectedStoredProceduresInDb1(), function (value) {
// console.log('arrayForEach',value,self.storedProceduresInDB2);
var match = ko.utils.arrayFirst(self.storedProceduresInDB2(), function (item) {
console.log('item in storedProceduresInDB2', value, item);
return value.Id === item.Id;
});
if (!match) {
console.log('No match, so add to sprocs', value);
sprocs.push(value);
} else {
console.log('Match found for:', value);
}
});
ko.utils.arrayForEach(self.selectedStoredProceduresInDb1(), function (value) {
console.log('storedProceduresInDB1', value);
});
console.log('sprocs', sprocs);
ko.utils.arrayPushAll(self.storedProceduresInDB2, sprocs)
};
self.removeFromDb2 = function(item, event){
self.storedProceduresInDB2.remove(function(item) {
return item.Name == $(event.currentTarget).find("option:selected").text();
});
}
return self;
};
ko.applyBindings(new SProcsViewModel());