Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向angular指令添加事件侦听器的正确方法_Javascript_Angularjs - Fatal编程技术网

Javascript 向angular指令添加事件侦听器的正确方法

Javascript 向angular指令添加事件侦听器的正确方法,javascript,angularjs,Javascript,Angularjs,我需要将事件侦听器添加到angular,但我的侦听器似乎工作不正常,在指令初始化时调用了一次回调,然后就不工作了,指令的代码如下所示: var someDir = function () { return { restrict: 'E', transclude: true, scope: {}, templateUrl: 'someTmpl', link: function (scope, element)

我需要将事件侦听器添加到angular,但我的侦听器似乎工作不正常,在指令初始化时调用了一次回调,然后就不工作了,指令的代码如下所示:

var someDir = function () {
    return {
        restrict: 'E',
        transclude: true,
        scope: {},
        templateUrl: 'someTmpl',
        link: function (scope, element) {
            scope.someFunc = function () { console.log('called'); };

            console.log(element[0].getElementsByClassName('some-elm'));
            element[0].getElementsByClassName('some-elm')[0].addEventListener('mousedown', scope.someFunc());
        }
    }
};
在控制台的页面加载中,我可以看到:

[input.some-elm.ng-pristine.ng-untouched.ng-valid]
called
那么,这种意外行为的原因是什么?向angular指令添加事件侦听器的正确方法是什么


注意:该指令在ui视图中,这种行为是否与此有关?

在链接函数中,您可以获得放置该指令的元素

您可以使用方法附加事件

link: function(scope, element) {
    var someFunc = function() { console.log('called'); };

    element.bind('mousedown',someFunc);
}
如果要将
someFunc
暴露到
链接函数中映射到指令的模板中


然后,您可以按照
scope.someFunc=someFunc

的方式进行操作。您可以直接在.some elm上的html模板中使用ngMousedown


阅读更多信息:

您需要将引用传递到
addEventListener
。尝试此
元素[0]。getElementsByClassName('some-elm')[0]。addEventListener('mousedown',scope.someFunc)