2014-02-21 95 views
1

我做了一個指令,裏面我試圖聽$ document.mousemove事件以重新定位一個div - 爲了製作一個數字滑塊(即在1-100之間的幻燈片數字)的目的。Angular Mousemove事件

<div ng-mousedown="handleDown($event)"></div> 

以上mousedown事件由以下功能解僱和處理:

$scope.handleDown = function(event) { 
    console.log("MOUSE DOWN"); 
    event.preventDefault(); 
    startX = event.pageX - x; 
    startY = event.pageY - y; 
    $document.on('mousemove', mousemove); 
    $document.on('mouseup', mouseup); 
}; 

鼠標鬆開功能不工作並導致控制檯日誌,但是鼠標移動完全不火:

function mousemove(event) { 
    console.log("MOUSE MOVE"); 
} 

function mouseup() { 
    console.log("MOUSE UP"); 
    $document.unbind('mousemove', mousemove); 
    $document.unbind('mouseup', mouseup); 
} 

如果是相關的,我的指令:

.directive('fmSlider', function($document) { 

    return { 
     restrict: 'E', 
     scope: { 
      fmMin: '=', 
      fmMax: '=', 
      fmDefault: '=' 
     }, 
     templateUrl: 'path-to-template/slider.html' 
    }; 

}); 

我不明白爲什麼mouseup可以工作,但mousemove不會。謝謝您的幫助。

+0

嘗試使用'而不是document.onmousemove',對我的作品 – Mosho

+2

有別的事情上,你所提供的代碼之外。這裏是一個小提琴,顯示你的代碼工作正常。 mousemove事件正在發射。如果這沒有幫助,請在小提琴中複製您的問題或分享一些代碼 http://jsfiddle.net/G9jGa/17/ –

回答

0

我不知道如果這能幫助你,但我遇到了類似的問題,我的代碼和我的控制器聲明首先看像這樣

app.controller('ToolBoxCtrl', function ($scope) 

但是當我把它改爲

app.controller('ToolBoxCtrl', function ($scope,$document) 

然後它工作。我不太清楚爲什麼,但至少有一些東西。

多虧了例如由查理·馬丁