我正在使用角度计时器,我对如何跟踪其事件感到有些困惑。例如,我希望在时间结束后做一些事情,但我无法在控制台日志中看到任何事件。
vm.add20Seconds = function() {
$scope.$broadcast('timer-add-cd-seconds', 20);
}
$scope.$on('timer-add-cd-seconds', function (event, data) {
console.log(data); // 'Some data'
});
控制台是空的。
https://github.com/siddii/angular-timer/blob/master/examples/angularjs-add-countdown-seconds.html
答案 0 :(得分:1)
由于链接中给出的代码似乎没有更新,我认为您将其更改为使用controllerAs
语法。因此,在调用控制器方法时,您的button
html将使用vm
别名。假设您使用了ng-controller="MyAppController as vm"
<强>标记强>
<button type="button" ng-click="vm.add20Seconds()">Add 20 Seconds</button>
其他人想在您的控制器中使用$scope
,然后只需将方法更改为$scope.add20Seconds
而不是vm.add20Seconds
<强>更新强>
要在20
秒之后调用一个函数,您可以在此处使用$timeout
服务,这将在提及$timeout
时调用和指定回调。
<强>代码强>
vm.add20Seconds = function() {
$scope.$broadcast('timer-add-cd-seconds', 20);
}
var myCallbackAfterTimeout = function(){
//add your code.
}
$scope.$on('timer-add-cd-seconds', function (event, data) {
console.log(data); // 'Some data'
$timeout(myCallbackAfterTimeout, data); //data is nothing but timeout milliseconds
});
在使用之前在控制器中包含
$timeout
依赖项。
答案 1 :(得分:0)
如果您正在寻找一篇关于使用范围树作为angularJS中的发布和订阅(发布/订阅)机制的好文章,请查看此link