Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 10 additions & 12 deletions ngDraggable.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ angular.module("ngDraggable", [])

var _dragOffset = null;

var _dragEnabled = false;
var _dragEnabled = attrs.ngDrag;

var _pressTimer = null;

Expand Down Expand Up @@ -72,7 +72,10 @@ angular.module("ngDraggable", [])
// add listeners.

scope.$on('$destroy', onDestroy);
scope.$watch(attrs.ngDrag, onEnableChange);
attrs.$observe('ngDrag', function(value){
_dragEnabled = value;
if (_dragEnabled === 'false') _dragEnabled=false;
});
scope.$watch(attrs.ngCenterAnchor, onCenterAnchor);
// wire up touch events
if (_dragHandle) {
Expand All @@ -89,9 +92,6 @@ angular.module("ngDraggable", [])
var onDestroy = function (enable) {
toggleListeners(false);
};
var onEnableChange = function (newVal, oldVal) {
_dragEnabled = (newVal);
};
var onCenterAnchor = function (newVal, oldVal) {
if(angular.isDefined(newVal))
_centerAnchor = (newVal || 'true');
Expand Down Expand Up @@ -149,7 +149,6 @@ angular.module("ngDraggable", [])
_dragOffset = {left:document.body.scrollLeft, top:document.body.scrollTop};
}


element.centerX = element[0].offsetWidth / 2;
element.centerY = element[0].offsetHeight / 2;

Expand Down Expand Up @@ -273,7 +272,7 @@ angular.module("ngDraggable", [])

var _myid = scope.$id;

var _dropEnabled=false;
var _dropEnabled=attrs.ngDrop;

var onDropCallback = $parse(attrs.ngDropSuccess);// || function(){};

Expand All @@ -290,7 +289,10 @@ angular.module("ngDraggable", [])

if (!enable)return;
// add listeners.
scope.$watch(attrs.ngDrop, onEnableChange);
attrs.$observe('ngDrop', function(value){
_dropEnabled = value;
if (_dropEnabled === 'false') _dropEnabled=false;
});
scope.$on('$destroy', onDestroy);
scope.$on('draggable:start', onDragStart);
scope.$on('draggable:move', onDragMove);
Expand All @@ -300,9 +302,6 @@ angular.module("ngDraggable", [])
var onDestroy = function (enable) {
toggleListeners(false);
};
var onEnableChange = function (newVal, oldVal) {
_dropEnabled=newVal;
};
var onDragStart = function(evt, obj) {
if(! _dropEnabled)return;
isTouching(obj.x,obj.y,obj.element);
Expand All @@ -325,7 +324,6 @@ angular.module("ngDraggable", [])
};

var onDragEnd = function (evt, obj) {

// don't listen to drop events if this is the element being dragged
// only update the styles and return
if (!_dropEnabled || _myid === obj.uid) {
Expand Down
162 changes: 162 additions & 0 deletions update-attr-val.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
<!DOCTYPE html>
<html>
<head>
<title>ngDraggable</title>
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootswatch/2.3.1/spruce/bootstrap.min.css">
<style>

*{
-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;
}
[ng-drag]{
-moz-user-select: -moz-none;
-khtml-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
[ng-drag]{
width: 100px;
height: 100px;
background: rgba(255,0,0, 0.5);
color:white;
text-align: center;
padding-top:40px;
display: inline-block;
margin:0 10px;
cursor: move;
}
ul.draggable-objects:after{
display: block;
content:"";
clear:both;
}
.draggable-objects li{
float:left;
display: block;
width: 120px;
height:100px;
}
[ng-drag].drag-over{
border:solid 1px red;
}
[ng-drag].dragging{
opacity: 0.5;
}
[ng-drop]{
background: rgba(0,255,0, 0.5);
text-align: center;
width: 600px;
height: 200px;
padding-top:90px;
display: block;
margin:20px auto;
position: relative;
}
[ng-drop].drag-enter{
border:solid 5px red;
}
[ng-drop] span.title{
display: block;
position: absolute;
top:50%;
left:50%;
width: 200px;
height: 20px;
margin-left: -100px;
margin-top: -10px;
}
[ng-drop] div{
position: relative;
z-index: 2;
}

</style>
</head>
<body ng-app="ExampleApp">

<div class="container" ng-controller="MainCtrl">

<div class="row">
<h1>ngDraggable Example</h1>
</div>

<ul class="draggable-objects">
<li ng-repeat="obj in draggableObjects" >
<div ng-drag="true" ng-drag-data="obj" ng-drag-start="ds()" data-allow-transform="true"> {{obj.name}} </div>
</li>
</ul>

<hr/>
{{drop_flag}}
<div ng-drop="{{ drop_flag }}" ng-drop-success="onDropComplete1($data,$event)">
<span class="title">Drop area #1</span>

<div ng-repeat="obj in droppedObjects1" ng-drag="true" ng-drag-data="obj" ng-drag-success="onDragSuccess1($data,$event)" ng-center-anchor="{{centerAnchor}}">
{{obj.name}}
</div>

</div>
<!--
<div ng-drop="true" ng-drop-success="onDropComplete2($data,$event)">
<span class="title">Drop area #2</span>

<div ng-repeat="obj in droppedObjects2" ng-drag="true" ng-drag-data="obj" ng-drag-success="onDragSuccess2($data,$event)" ng-center-anchor="{{centerAnchor}}">
{{obj.name}}
</div>

</div>
-->
<hr>



</div>
<footer style="margin-top:2000px;">footer</footer>

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script>
<script src="ngDraggable.js"></script>
<script>
angular.module('ExampleApp', ['ngDraggable']).
controller('MainCtrl', function ($scope) {
$scope.centerAnchor = true;
$scope.toggleCenterAnchor = function () {$scope.centerAnchor = !$scope.centerAnchor}
$scope.draggableObjects = [{name:'one'}, {name:'two'}, {name:'three'}];
$scope.droppedObjects1 = [];
$scope.droppedObjects2= [];
$scope.onDropComplete1=function(data,evt){
var index = $scope.droppedObjects1.indexOf(data);
if (index == -1)
$scope.droppedObjects1.push(data);
}
$scope.onDragSuccess1=function(data,evt){
console.log("133","$scope","onDragSuccess1", "", evt);
var index = $scope.droppedObjects1.indexOf(data);
if (index > -1) {
$scope.droppedObjects1.splice(index, 1);
}
}
$scope.drop_flag = false;
$scope.ds = function(){
console.log('drag start');
$scope.drop_flag = true;
}
$scope.onDragSuccess2=function(data,evt){
var index = $scope.droppedObjects2.indexOf(data);
if (index > -1) {
$scope.droppedObjects2.splice(index, 1);
}
}
$scope.onDropComplete2=function(data,evt){
var index = $scope.droppedObjects2.indexOf(data);
if (index == -1) {
$scope.droppedObjects2.push(data);
}
}
var inArray = function(array, obj) {
var index = array.indexOf(obj);
}
});
</script>
</body>
</html>