Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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 如何在AngularJS中绑定自定义事件?_Javascript_Angularjs_Polymer_Dom Events - Fatal编程技术网

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的答案要简单。