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