2015-09-12 2 views
1

Я использую угловой таймер, и я просто немного смущен, как отслеживать его события. Например, я хочу что-то сделать по истечении времени, но я не вижу никаких событий в журнале консоли.

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

ответ

1

Как код, указанный в ссылке не кажется, будет обновляться, я думаю, что вы изменили его использовать controllerAs синтаксис. Таким образом, ваш button html будет использовать псевдоним vm при вызове метода контроллера. Предполагая, что вы использовали ng-controller="MyAppController as vm"

Markup

<button type="button" ng-click="vm.add20Seconds()">Add 20 Seconds</button> 

Else хотел использовать $scope в контроллере, то просто измените метод $scope.add20Seconds вместо vm.add20Seconds

Update

Чтобы назвать после 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 зависимость в контроллере, прежде чем использовать его.

+0

Да, я знаю. Добавление секунд работает. Я хочу реализовать обратный вызов после того, как время закончится, но я не вижу никаких событий в передаче «timer-add-cd-seconds». –

+0

@VitalyFry У вас вопрос выглядит путаным, любезно обновляйте его. Для вашей озабоченности вы должны использовать '$ timeout' /' $ interval' –

0

, если вы ищете хорошую статью об использовании дерева области видимости As A публикации и подписки (/ Sub Pub) механизм angularJS пожалуйста, проверьте этот link

Смежные вопросы