Javascript 如何在AngularJS中绑定自定义事件?
我有一个自定义事件Javascript 如何在AngularJS中绑定自定义事件?,javascript,angularjs,polymer,dom-events,Javascript,Angularjs,Polymer,Dom Events,我有一个自定义事件核心转换(实际上由Polymer激发),我可以使用document.addEventListener()设置事件处理程序。但是用AngularJS做这件事的最佳实践是什么 或者,我可以在DOM中显式设置处理程序,即,但如何在AngularJS中定义此函数?请参见FIDLE,这里我创建了一个将事件绑定到元素的自定义指令 angular.module('HelloApp', []) .directive('customDir', function () {
核心转换(实际上由Polymer激发),我可以使用document.addEventListener()
设置事件处理程序。但是用AngularJS做这件事的最佳实践是什么
或者,我可以在DOM中显式设置处理程序,即
,但如何在AngularJS中定义此函数?请参见FIDLE,这里我创建了一个将事件绑定到元素的自定义指令
angular.module('HelloApp', [])
.directive('customDir', function () {
return {
restrict: 'A',
link: function(scope, element, attrs)
{
element.bind("click",function()
{
alert("you clicked me");
})
}
}
})
在您的情况下,只需将定义的事件绑定到元素,即可执行以下操作:
将自定义元素包装在自动绑定
模板中
将所有处理程序从角度范围绑定到聚合范围(模板元素)
就这样
点击我
角度。模块('demo-app',[])
.config(函数($interpolateProvider){
$interpolateProvider.startSymbol('{[{').endSymbol('}]}');
})
.directive('bindEvents',function(){
返回{
限制:“A”,
链接:函数(范围、元素、属性){
eventNames=attrs.bindEvents.split(',');
forEach(函数(eventName){
元素[0][eventName]=范围[eventName];
});
}
}
})
.controller('DemoController',函数($scope){
$scope.text='';
$scope.clickMe=函数(){
$scope.text+='\n您单击了我!!';
$scope.$apply();
};
$scope.mouseOver=函数(){
$scope.text+='\n您将鼠标悬停在我身上!!';
$scope.$apply();
}
});
创建将事件绑定到的指令element@NaeemShaikh我看过很多帖子和指导教程,但我仍然不知道如何实现它。指令在这里做什么?如何传递事件参数?非常感谢!直到看到你的答案,我才明白指令@Melkor用于较少的事件这将起作用,但是如果您有20或30个要绑定的事件处理程序,您将为它们中的每一个创建一个自定义指令?谢谢您,但问题是,我必须更改插值标记,这比Naeem的答案要简单。