尝试让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) {
答案 0 :(得分:9)
通常,在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'});
$element
服务无法在每个地方注入。在控制器中,您可以使用$element
,在指令中,您应该使用链接函数中的element
参数。
您还可以使用$document
服务触发event
。
确保在Angular库之前包含jQuery,因此jquery方法将自动包含在$element
和$document
服务中。
答案 1 :(得分:0)
我必须是一个不言而喻的人;不要这样做。你正在做什么,根据一个事件修改DOM,实际上就是为它构建的角度。将jQuery引入图片是不必要的,只会增加复杂性。查看ng-bind
和ng-model
,了解如何更新DOM以响应您的数据更改。