2016-11-14 179 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