2014-12-05 76 views
0

是否有模擬鼠標事件的指令?模擬mouseenter的Angular指令?

我試過尋找一個,但我發現的所有命令都是將一個函數綁定到鼠標上方的指令或業力測試模擬鼠標。

我的使用案例是,我準備好了一個綁定到鼠標的事件,但我正在尋找simulate-mouse ="shouldBeMouseOver"形式的指令,這樣當$scope.shouldBeMouseOver爲真時,我將指令置於該指令上,就好像它有反應一樣鼠標事件。

+1

不會是簡單的使用範圍變量,如'NG東西「類」? – charlietfl 2014-12-05 15:29:00

+0

還有其他的行爲,我不能改變的元素,這就是爲什麼我要繞模擬鼠標的路線。 – 2014-12-05 15:30:19

+0

你將不得不創建一個事件對象,然後包括座標並觸發mouseover – charlietfl 2014-12-05 15:31:54

回答

2

UPTATE! 以前的解決方案是一種解決方法。您現在可以使用角度指令(https://docs.angularjs.org/api/ng/directive/ngMouseenter)。

ng-mouseenter="handler()" 

以前的解決方案(解決方法)

HTML:

<div simulate-mouse eventhandle="objfromscope">Hover</div> <!-- objfromscope: true or false --> 
    <div ng-click="objfromscope=!objfromscope">Enable/Disable hover</div> 

指令

app.directive('simulateMouse', function() { 
    return { 
     restrict: 'AE', 
     scope: { 
      eventhandle : '=eventhandle' //eventhandle is two way data binded 
     }, 
     link: function(scope, element, attrs) { 

      scope.$watch(function() { 
        return scope.eventhandle; 
       }, function(newValue) { 
        console.log(newValue) 
        if(newValue){ 
        element.off("mouseenter").on("mouseenter",function(){ 
          onMouseOverCall() 
         }); 
       }else{ 
        element.off("mouseenter"); 
       } 

       }); 

      var onMouseOverCall = function(){ /* called only when eventhandle is true */ 
       console.log("hoho") 
      } 
     } 
    }; 
});