要在AngularJS指令中从$rootScope发出事件,可以使用$emit或$broadcast方法。以下是一个示例解决方案:
HTML代码:
AngularJS代码:
angular.module('myApp', [])
.controller('myController', ['$scope', '$rootScope', function($scope, $rootScope) {
$scope.emitEvent = function() {
$rootScope.$emit('myEvent', 'Hello from $rootScope!');
};
}])
.directive('myDirective', ['$rootScope', function($rootScope) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
$rootScope.$on('myEvent', function(event, data) {
console.log(data);
});
}
};
}]);
在上面的代码中,我们在控制器中定义了一个emitEvent函数,该函数使用$emit方法在$rootScope中发出'myEvent'事件,并传递了一个字符串数据。
然后,我们在指令中使用$rootScope.$on方法监听'myEvent'事件,并在控制台上打印传递的数据。
当点击“发出事件”按钮时,事件将被发出,并且指令中的监听器将接收到数据并将其打印到控制台上。