2016-11-14 181 views
0

我正在爲我的客戶端執行拖放功能。我已經實現了用於拖放的拖拽,但是沒有提供拖拽或任何其他正在拖放的庫中的多元素拖放。多元素拖放

請建議我如何在角度或其他任何應該與觸摸設備兼容的JavaScript庫中選擇和拖放多個元素。

在此先感謝。

注意:我們可以在dragular中使用多次拖放嗎?

更新(30/11/2016):添加一點到我的要求。我們如何限制放置區中元素的冗餘。

說明:

  • 當我們從源複製的項目,我們將無法拖動它,如果它已經降到/在目標容器中。

  • 準確地說,如果項目已經位於目標容器中,我們可以使項目不會拖曳。

回答

0

你的意思是多個獨立的拖拽&滴?就像用一個手指拖動一個元素,用另一個手指拖動第二個元素一樣?

那不是由dragula也不dragular支持,但我工作的新圖書館,這將是可能的,但還是現在正在進行中:/

我不知道任何其他庫支持它。

EDIT(16年11月27日):

我已經更新了你的筆http://codepen.io/luckylooke/pen/zodmEO

angular.module("testDnD", ["dragularModule"]). 
controller("test", ['$scope', 'dragularService', function($scope, dragularService) { 

    $scope.selected = []; 
    $scope.filter = []; 
    $scope.testObj = [{...}]; 

    $scope.modelClickData = function(test) { 
    console.log(test); 
    $scope.popdata = test; 
    }; 

    $scope.modelSelect = function(test) { 
    test.selected = !test.selected; 

    if (test.selected) 
     $scope.selected.push(test); 
    else 
     $scope.selected.splice($scope.selected.indexOf(test), 1); 

    // console.log('selected', test); 
    }; 

    var containerLeft = document.querySelector('#thumbnailTST'); 
    var containerRight = document.querySelector('#filler'); 

    dragularService.cleanEnviroment(); 
    dragularService([containerLeft, containerRight], { 
    copy: true, 
    containersModel: [$scope.testObj, $scope.filter], 
    scope: $scope 
    }); 

    $scope.$on('dragularcloned', function() { 
    var mirror = $('.gu-mirror'); 
    if ($scope.selected.length > 1 && mirror.length) { // is multiple drag 
     mirror.addClass('multipledrag'); 
    } 
    }); 

    $scope.$on('dragulardrop', function(e, el, targetcontainer, sourcecontainer, conmodel, elindex, targetmodel, dropindex) { 
    if ($scope.selected.length > 1) { // is multiple drag 
     $scope.selected.forEach(function(item) { 
     if (item != $scope.testObj[elindex]) { 
      var clone = {}; 
      clone = $.extend(true, clone, item); 
      delete clone.$$hashKey; 
      $scope.filter.splice(++dropindex, 0, clone); 
     } 
     }); 
    } 
    console.log($scope.filter); 
    }); 

}]) 
+0

感謝@Luckylooke的回覆。我急切地等着你回答這個問題。通過多次拖放我意味着我將能夠選擇多個元素,然後將其全部拖放到目標容器中。 – pBanyal

+0

@pBanyal可以通過dragula或dragula完成,創建小提琴/ codepen/...與您的sceanrio,我可以幫助你解決這個問題;) – Luckylooke

+0

道歉@Luckylooke回答太遲。對我來說有一些違規的最後期限。這是我的筆http://codepen.io/pBanyal/pen/ObjQPg,請讓我知道是否需要其他任何東西。 – pBanyal

0

這是你的問題的答案。 jQuery Sortable - Select and Drag Multiple List Items

我覺得好主意是使用jQuery進行拖放。我正在使用這個工作。 這裏u有例如

jsfiddle.net/hQnWG/614/

+0

感謝您的建議@ kol1991。其實我最關心的是我也應該在觸摸屏上運行。而對於這些列表,還有更簡單的方式 - 角度 - 拖放 - 刪除列表_主題。我有div的拖動,它也有一些數據。 – pBanyal