0
这是我的html:拖放排序NG-重复
<div ng-repeat="activity in activities">
<button id="{{activity.id}}" activity=activity draggable>
{{activity.name}}
</button>
</div>
<div droppable handle="handleDrop(activity)">
<div ng-repeat="activity in getAll()">
<button>
{{activity.name}}
</button>
</div>
</div>
正如你看到的,我有两个指令,拖动和投掷的。可拖动指令通过dataTransfer将活动数据发送到可放置指令。在事件'drop'上,数据(活动JSON)被添加到控制器,getAll()返回所有被放弃的活动。现在,这工作。但是我无法改变这些活动的顺序,因为放置只会将活动推到列表中。如果我希望能够在两项活动之间进行一项活动,或者重新排列它们,我该怎么办?
编辑:
app.directive('droppable', function() {
return {
scope: {
handle: '&'
},
link: function (scope, element) {
element.on('dragover', function (e) {
e.preventDefault();
});
element.on('drop', function (e) {
e.preventDefault();
var activity = JSON.parse(e.originalEvent.dataTransfer.getData("text"));
scope.handle({activity: activity});
scope.$apply();
});
}
};
});
app.directive('draggable', function() {
return {
scope: {
'activity' : '='
},
link: function (scope, element) {
var el = element[0];
el.draggable = true;
el.addEventListener('dragstart', function (e) {
e.dataTransfer.setData("text", JSON.stringify(scope.activity));
}, false);
}
}
});