per la direttiva che ho scritto, come posso ottenere $ scope in modo che possa fare $ scope. $ On()? Potrei iniettare $ rootScope, ma voglio usare $ scope per catturare la trasmissione.
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--;
});
}
}
}]);
UPDATE: con l'iniezione campo di applicazione, ottengo l'errore: Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope <- countDownDirective
angular.module('monitorApp')
.directive("countDown", [ 'sseHandler', '$scope', function (sseHandler, $scope) {
console.log(sseHandler.broadcastStamp.cpuResult);
return {
scope: {
countFrom: "="
},
link: function(scope, $scope){
scope.countFrom = sseHandler.broadcastStamp.cpuResult;
$scope.$on('ONE_SEC', function(scope, $scope) {
sseHandler.broadcastStamp.cpuResult--;
});
}
}
}]);
Ho provato scope.on() ma .on() non esiste su quell'ambito. – dman
Non c'è "on", solo "$ on". I primi tre argomenti di 'link' sono sempre scope, elementi e attributi; puoi chiamarli in modo diverso, ma ottieni sempre le stesse cose. E non usare mai 'scope' e' $ scope', è solo un non-sense confuso. – maaartinus
L'ho pensato anche io ... ma come faccio a ottenere ciò che sto cercando di fare nella direttiva senza usare 'scope' e' $ scope'? – dman