对于我写的指令,如何在那里获得$scope所以我可以做$scope.$on()?我可以注入$rootScope,但我想使用$scope来捕获广播.
angular.module('monitorApp') .run(function($rootScope,$interval) { $interval(function(){ $rootScope.$broadcast('ONE_SEC'); },1000); });
angular.module('monitorApp') .directive("countDown",[ 'sseHandler',function (sseHandler) { console.log(sseHandler.broadcastStamp.cpuResult); return { scope: { countFrom: "=" },link: function(scope,$scope){ scope.countFrom = sseHandler.broadcastStamp.cpuResult; $scope.$on('ONE_SEC',function(scope) { sseHandler.broadcastStamp.cpuResult--; }); } } }]);
更新:使用范围注入,我收到错误:
错误:[$injector:unpr]未知提供者:$scopeProvider< - $scope< - countDownDirective
angular.module('monitorApp') .directive("countDown",'$scope',function (sseHandler,$scope) { console.log(sseHandler.broadcastStamp.cpuResult); return { scope: { countFrom: "=" },function(scope,$scope) { sseHandler.broadcastStamp.cpuResult--; }); } } }]);
解决方法
你可以使用scope.$on,你不需要尝试注入$scope:
scope.$on('ONE_SEC',function() { //do stuff });