- <div ng-style="{'top': itemTop, 'left': itemLeft}"
- my-mousedrag="itemTop = itemTop - $deltaY; itemLeft = itemLeft - $deltaX"
- ></div>
JavaScript
- app.directive('myMousedrag', function() {
- return function(scope, element, attrs) {
- var prevEvent;
- element.mousedown(function(event){
- prevEvent = event;
- }).mouseup(function(event){
- prevEvent = null;
- }).mousemove(function(event){
- if(!prevEvent){ return; }
- /*將 element 拖移事件傳遞到 scope 上*/
- scope.$eval(attrs['myMousedrag'], {
- $event: event,
- $deltaX: event.clientX - prevEvent.clientX,
- $deltaY: event.clientY - prevEvent.clientY
- });
- /*通知 scope 有異動發生*/
- scope.$digest();
- prevEvent = event;
- });
- /*在 destroy 時清除事件註冊*/
- scope.$on('$destroy', function(){
- element.off('mousedown mouseup mousemove');
- });
- };
- });
0 回應:
張貼留言