我已经制定了一个指令,在我试图听取$ document.mousemove事件以重新定位div时 - 为了制作数字滑块(即幻灯片数字在1-100之间)。
<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);
};
mouseup函数确实有效并导致控制台日志,但是mousemove根本不会触发:
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 :(得分:0)
我不知道这是否对您有所帮助,但我遇到了与我的代码类似的问题,我的控制器声明首先看起来像这样
app.controller('ToolBoxCtrl', function ($scope)
但是当我把它改成
时app.controller('ToolBoxCtrl', function ($scope,$document)
然后它奏效了。我不太清楚为什么,但至少嘿嘿。
感谢Charlie Martin的例子