2014-12-05 2 views
0

Есть ли директива для моделирования события mouseenter?Угловая директива для моделирования мышиного центра?

Я пробовал искать один, но все, что я нашел, является директивой, которая связывает функцию с мышью или карма-тестами для имитации мыши.

Мой случай использования является то, что я все готово было событие переплетены для мыши над но я ищу директивы в виде simulate-mouse ="shouldBeMouseOver" таким образом, что, когда $scope.shouldBeMouseOver правда элемент я эту директиву о реагирует так, как будто он имеет событие mouseenter.

+1

не было бы проще использовать переменную области действия и что-то вроде 'нг -класс? – charlietfl

+0

есть другое поведение при работе над элементом, который я не могу изменить, поэтому я иду вокруг маршрута моделирования мыши. –

+0

вам нужно будет создать объект события, который включает в себя координаты и вызвать mouseover – charlietfl

ответ

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") 
      } 
     } 
    }; 
}); 
Смежные вопросы