Angularjs 使用角度计时器停止单个计时器
我有一个应用程序正在使用,但我无法停止单个计时器。当我在第一个计时器上单击timeout时,它会将它们全部停止 基本上,我根据员工的姓名制作个人计时器,如下所示: index.htmlAngularjs 使用角度计时器停止单个计时器,angularjs,timer,Angularjs,Timer,我有一个应用程序正在使用,但我无法停止单个计时器。当我在第一个计时器上单击timeout时,它会将它们全部停止 基本上,我根据员工的姓名制作个人计时器,如下所示: index.html ... <md-card class="md-padding"> <md-content-card> <md-input-container> <label>Employee</label> <md-select ng-mo
...
<md-card class="md-padding">
<md-content-card>
<md-input-container>
<label>Employee</label>
<md-select ng-model="employeeName">
<md-option ng-repeat="employee in employees" value="{{employee.name}}">
{{employee.name}}
</md-option>
</md-select>
</md-input-container>
<center>
<md-button class="md-raised md-primary md-hue-2" ng-click="startTimer()">Time In</md-button>
</center>
</md-content-card>
</md-card>
<md-card ng-repeat="(key, value) in times">
<md-content-card>
<center>
<h2>{{ value.employeeName }}</h2>
<h3>Time In At: {{ value.date | date: 'medium' }}</h3>
<h3>
<timer interval="1000">{{hours}} hour{{hoursS}}, {{minutes}} minute{{minutesS}}, {{seconds}} second{{secondsS}}.</timer>
</h3>
<br>
<md-button class="md-raised md-accent md-hue-2" ng-click="stopTimer()">Time Out</md-button>
</center>
</md-content-card>
</md-card>
...
角度计时器基于控制器范围内引发的事件。如果在一个作用域上定义了多个计时器,那么所有这些计时器将一起启动和停止 幸运的是,您在这里使用的是
ng repeat
,它创建了一个新的作用域,并且计时器嵌套在其中
您只需访问此作用域即可引发停止特定计时器的事件。
当按钮的事件处理程序被调用时,此指向ng repeat
的范围,因此此操作有效
$scope.stopTimer = function (){
this.$broadcast('timer-stop');
};
您能否将停止计时器的实现更改为使用此。$broadcast并查看它是否工作。由于ng repeat创建了一个新的作用域,所以在我不熟悉这个计时器的情况下也可以在这里检查,我认为它的工作原理与其他计时器一样,您可以在ng repeat中创建时为它分配一个特定的ID。然后你可以把那个ID和你的停止广播一起传递,只瞄准那个计时器,而不是杀死所有的计时器。@Chandermani你的建议非常有效。谢谢,太好了!那么让我把它作为一个答案加上,你可以在回答的问题上做标记。
$scope.stopTimer = function (){
this.$broadcast('timer-stop');
};