我在每个选项卡中使用ng-repeat
的uib-tabset
是计时器。每个计时器都有一个开始按钮,因此每个计时器都可以在某些操作上启动。
<uib-tabset active="activeTab">
<uib-tab ng-repeat="question in vm.QuestionsList" index="question.Index" disable="question.disabled">
<uib-tab-heading>
Q{{question.Index}}
</uib-tab-heading>
<timer countdown="question.TimeForQuestionInSeconds" interval="1000" finish-callback="vm.questionTimeOut()" autostart="false" id="q{{question.Index}}-timer">
Remaining time : {{countdown}} second{{secondsS}} <br />
<div class="progress progress-striped active {{displayProgressActive}}" style="height: 15px;"><div class="bar" style="width: {{progressBar}}%;"></div> </div>
</timer>
<button type="button" class="btn btn-default btn-sm" ng-click="vm.startTimer()" ng-disabled="vm.TimerRunning">Start</button>
</uib-tab>
</uib-tabset>
在我的控制器中,我有这个功能:
public startTimer() {
this.$scope.$broadcast('timer-start');
this.TimerRunning = true;
}
但它启动了我所有的计时器。我在这里找到了这个解决方案https://github.com/siddii/angular-timer/issues/166
document.getElementById('q1-timer').start();
但我得到这个错误Uncaught TypeError: document.getElementById(...).start is not a function
,不知道为什么。还有其他方法吗?