从工厂传播范围事件
Propagating Scope Events from a Factory
$rootScope.$broadcast 和 $rootScope.$emit 都不在我的工厂工作
我已经$rootScope
注入了工厂。工厂returns这个功能:
alertHook: function() {
$rootScope.$broadcast('getRollups', 'finally');
}
我将该工厂注入指令并调用 alertHook()
函数。
我正在收听 getRollups
,就像这样:
$scope.$on( 'getRollups', function( evt, args ) {
console.log( args );
});
你瞧,控制台上没有任何记录。我也试过 $emit 而不是 $broadcast.
在我发疯之前请帮忙:)
工厂使用 $rootScope.$broadcast
:
angular.module("app",[])
.factory("factory", function($rootScope) {
return { broadcast: broadcast };
function broadcast () {
$rootScope.$broadcast("myEvent","from factory")
}
})
.controller("ctrl",function($scope,factory) {
$scope.$on("myEvent", function(ev,args) {
console.log(ev.name,args);
});
$scope.clickMe = function() {
factory.broadcast();
};
})
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="app" ng-controller="ctrl">
<button ng-click="clickMe()">Click me</button>
</body>
有关详细信息,请参阅
$rootScope.$broadcast 和 $rootScope.$emit 都不在我的工厂工作
我已经$rootScope
注入了工厂。工厂returns这个功能:
alertHook: function() {
$rootScope.$broadcast('getRollups', 'finally');
}
我将该工厂注入指令并调用 alertHook()
函数。
我正在收听 getRollups
,就像这样:
$scope.$on( 'getRollups', function( evt, args ) {
console.log( args );
});
你瞧,控制台上没有任何记录。我也试过 $emit 而不是 $broadcast.
在我发疯之前请帮忙:)
工厂使用 $rootScope.$broadcast
:
angular.module("app",[])
.factory("factory", function($rootScope) {
return { broadcast: broadcast };
function broadcast () {
$rootScope.$broadcast("myEvent","from factory")
}
})
.controller("ctrl",function($scope,factory) {
$scope.$on("myEvent", function(ev,args) {
console.log(ev.name,args);
});
$scope.clickMe = function() {
factory.broadcast();
};
})
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="app" ng-controller="ctrl">
<button ng-click="clickMe()">Click me</button>
</body>
有关详细信息,请参阅