0
끌어서 놓기 목록에서 itom을 제거하고 observableArray (sortable을 사용하여)를 연결하는 이벤트를 추가 할 수 있습니까?목록 끌어다 놓기 - 더블 클릭으로 항목 제거
나는 다중 선택 목록에서 두 번 클릭에 제거와 같은 논리를 사용하여 시도했지만 성공하지했습니다
HTML :
<div class="list">
<h2>Stored procedures In DB 2</h2>
<ul class="list" data-bind="sortable: { data: storedProceduresInDB2, beforeMove: checkAndCopy }, event: { dblclick: removeFromDb2 }">
<li class="item" data-bind="text: Name"></li>
</ul>
</div>
코드 :
var ViewModel = function() {
var self = this;
self.storedProceduresInDB1 = ko.observableArray([
{ Name: 'SP1', Id: 1 },
{ Name: 'SP2', Id: 2 },
{ Name: 'SP3', Id: 3 }
]);
self.storedProceduresInDB2 = ko.observableArray([
{ Name: 'SP3', Id: 3 },
{ Name: 'SP4', Id: 4 },
{ Name: 'SP5', Id: 5 }
]);
self.storedProceduresInDB2Orig = ko.observableArray([
{ Name: 'SP3', Id: 3 },
{ Name: 'SP4', Id: 4 }
]);
self.selectedStoredProcedureInDB1 = ko.observable();
self.selectedStoredProcedureInDB2 = ko.observable();
self.selectStoredProcedureInDB1 = function (sp) {
self.selectedStoredProcedureInDB1(sp);
};
self.selectStoredProcedureInDB2 = function (sp) {
self.selectedStoredProcedureInDB2(sp);
};
self.checkAndCopy = function(event) {
var targetHasItem = ko.utils.arrayFilter(event.targetParent(), function(item) {
return item.Id == event.item.Id;
}).length;
if(!targetHasItem) {
event.targetParent.splice(event.targetIndex, 0, event.item);
}
if(event.targetParent != event.sourceParent) {
event.cancelDrop = true;
}
};
self.removeFromDb2 = function(item, event){
self.storedProceduresInDB2.remove(function(item) {
var nameToRemove = $(event.currentTarget).find("option:selected").text();
var isOrig = ko.utils.arrayFirst(self.storedProceduresInDB2Orig(), function(item){
return item.Name == nameToRemove;
});
return !isOrig && item.Name == nameToRemove;
});
}
};
ko.applyBindings(new ViewModel());
덕분에 도움을 많이 :). – Henrik