用于模拟mouseenter的Angular指令?

时间:2014-12-05 15:26:02

标签: javascript jquery angularjs angularjs-directive

是否有模拟mouseenter事件的指令?

我已经尝试过搜索一个,但我找到的只是将鼠标功能绑定的指令或用于模拟鼠标的karma测试。

我的用例是我已准备好将鼠标悬停的事件绑定,但我正在寻找simulate-mouse ="shouldBeMouseOver"形式的指令,以便当$scope.shouldBeMouseOver为真时我放置的元素指令就像有鼠标中心事件一样做出反应。

1 个答案:

答案 0 :(得分: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") 
           }
        }
    };
});