Angular mousemove事件

时间:2014-02-21 01:02:33

标签: javascript angularjs

我已经制定了一个指令,在我试图听取$ 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不会。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我不知道这是否对您有所帮助,但我遇到了与我的代码类似的问题,我的控制器声明首先看起来像这样

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

但是当我把它改成

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

然后它奏效了。我不太清楚为什么,但至少嘿嘿。

感谢Charlie Martin的例子