Đây là câu trả lời đơn giản nhất tôi có thể đưa ra sử dụng $interval:
Example
Các JS
function TimeCtrl($interval) {
var timeController = this;
timeController.clock = { time: "", interval: 1000 };
$interval(function() {
timeController.clock.time = Date.now();},
timeController.clock.interval);
}
HTML
<div ng-controller='TimeCtrl as timeCtrl'>
<p>{{ timeCtrl.clock.time | date:'medium'}}</p>
</div>
Đây là một thực hiện hẹn giờ sử dụng chức năng đăng ký $ khoảng cùng đăng ký một khoảng thời gian mới vào đầu, và hủy khoảng trên dừng lại.
CẢNH BÁO!Nó không phải là khả năng liên kết với các tham số $ khoảng chậm trễ
Example
Các JS
function TimeCtrl($interval) {
var timeController = this;
timeController.clock = { time: "", interval: 1000 };
timeController.timer = { time: (new Date()).setHours(0,0,0,0), startTime: "", interval: 10};
timeController.timerProcess;
timeController.timerStart = function() {
// Register the interval and hold on to the interval promise
timeController.timerProcess = RegisterInterval(TimerTick, timeController.timer.interval);
// Reset the time to 0
timeController.timerReset();
}
timeController.timerReset = function() {
timeController.timer.startTime = Date.now();
timeController.timer.time = (new Date()).setHours(0,0,0,0);
}
timeController.timerStop = function() {
// If there is an interval process then stop it
if(timeController.timerProcess){
$interval.cancel(timeController.timerProcess);
}
}
function ClockTick() {
timeController.clock.time = Date.now();
}
function TimerTick(){
// Increment the time by the time difference now and the timer start time
timeController.timer.time += Date.now() - timeController.timer.startTime;
// Reset the start time
timeController.timer.startTime = Date.now();
}
function RegisterInterval(regFunction, regInterval){
return $interval(regFunction, regInterval);
}
RegisterInterval(ClockTick, timeController.clock.interval);
}
HTML
<div ng-controller='TimeCtrl as timeCtrl'>
<p>Date: {{ timeCtrl.clock.time | date:'medium'}}</p>
<p>Timer: {{ timeCtrl.timer.time | date:'mm:ss:sss'}}</p>
<button type="button" ng-click="timeCtrl.timerStart()">Start</button>
<button type="button" ng-click="timeCtrl.timerReset()">Reset</button>
<button type="button" ng-click="timeCtrl.timerStop()">Stop</button>
</div>
Nguồn
2016-02-10 18:36:08
này có thể đạt được tao nhã hơn khi sử dụng khoảng $. –
Tôi có một số câu hỏi: Tại sao không bắt đầu bằng cách sử dụng chỉ cần đánh dấu(); và tại sao sử dụng phạm vi và không phải cái gì đó liếm var time = this ;? – olahell
Bạn cũng nên chỉ sử dụng một chỉ thị để làm điều đó và có thể làm một cái gì đó như: ' current-time>' –
OpensaurusRex