从Angular广播到jQuery Listener

试图让AngularJS广播jQuery正在侦听的自定义事件。

在jQuery中我有类似的东西:

$( document ).on( "myCustomEvent", function( event, data ) { $( this ).text( data.myName + ", hi there!" ); }); 

在AngularJS中我有这样的事情:

 $rootScope.$broadcast('myCustomEvent', data); 

jQuery是否应该能够收听AngularJS正在播放的广播,或者只能通过以下方式与AngularJs绑定:

 $scope.$on.('myCustomEvent', function(event,data) { 

演示http://plnkr.co/edit/WFERKW?p=preview

通常,在DOM元素上触发的事件会将DOM树冒泡到目标元素的所有父元素。 因此,您可以在控制器中注入$element服务并在其上触发事件。

 // Document as a parent of `$element` will receive this event $(document).on('myCustomEvent', function(event, data) { console.log(data); }); // In controller $element.trigger('myCustomEvent', {myName: 'Steve Jobs'}); 

注意

  1. $element服务无法在每个地方注入。 在控制器中,您可以使用$element ,在指令中,您应该使用链接函数中的element参数。

  2. 您还可以使用$document service来触发event

  3. 在Angular库之前包含jQuery,因此jquery方法将自动包含在$element$document服务中。

我必须是一个不言而喻的人; 不要这样做。 您正在做什么,基于事件修改DOM,实际上是为角色构建的。 将jQuery引入图片是不必要的,只会增加复杂性。 查看ng-bindng-model ,了解如何更新DOM以响应数据更改。