从Angular广播到jQuery Listener

Ori*_*son 9 jquery angularjs

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

在jQuery中我有类似的东西:

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

在AngularJS中我有这样的事情:

$rootScope.$broadcast('myCustomEvent', data);
Run Code Online (Sandbox Code Playgroud)

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

$scope.$on.('myCustomEvent', function(event,data) {
Run Code Online (Sandbox Code Playgroud)

Dai*_*wei 9

演示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'});
Run Code Online (Sandbox Code Playgroud)

注意

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

  2. 您也可以使用$document服务来触发event.

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