使用mouseEvents时angularjs window.alert()会导致错误

Ism*_*ail 4 javascript angularjs

这是代码的链接:

http://plnkr.co/edit/usrmiNkj5YJY5SlV8ETw?p=preview

打开你的javascript控制台,然后点击"打个招呼".它将触发$ apply已经在进行中的错误.

但是当你删除这段代码时:

ng-controller="mouseEvents" ng-mousedown="onMouseDown()" ng-mouseup="onMouseUp()" ng-mousemove="onMouseMove()"
Run Code Online (Sandbox Code Playgroud)

当你点击"打个招呼"保存后,错误就消失了.

我怎么解决这个问题?

我需要mouseEvents来设置标志,如果鼠标关闭或者它是多个不同的控制器.我不能简单地在我的代码中删除它.

编辑:

较新的角度版本在没有$ timeout v1.3.10或更高版本的情况下解决了我的问题

pan*_*kaj 6

使用$ timeout让角度完成脏检查然后显示警报.

app.controller("demoController",function($scope,$window, $timeout){
  $scope.save = function(){
    $timeout(function(){
       window.alert("hi!");
    });

  };
}); 
Run Code Online (Sandbox Code Playgroud)

Plunkr:http://plnkr.co/edit/Kxbey5Rc43xsB9v5ugZ5?p =preview