我正在实现模拟和数字时钟,但问题是时间没有显示实时时间,如何设置时间间隔以每秒刷新一次时间?
$scope.TimeZ = moment().format('MMMM Do YYYY, h:mm:ss a');
function TimeZoneDetails(time, date, content, name) {
this.Time = time;
this.Date = date;
this.Content = content;
this.Name = name;
}
$scope.LstTimeZoneDetails = [];
$($scope.TimeZone.split(", ")).each(function (key, value) {
var objTimeZoneDetails = new TimeZoneDetails(moment.tz(value).format('LT'),
moment.tz(value).format('LL'),
moment.tz.zone(value).abbr(moment.utc().valueOf()),
moment.tz.zone(value).name);
//push values to array
$scope.LstTimeZoneDetails.push(objTimeZoneDetails);
timedUpdate();
})
答案 0 :(得分:2)
角度本身没有间隔,可以使用。
var intervalID = window.setInterval(myCallback, 1 * 1000);
function myCallback() {
console.log('Time');
}
将“ 1 ”替换为您希望的时间。 目前,间隔设置为 1秒
要破坏或停止间隔使用。
clearInterval(intervalID);
答案 1 :(得分:1)
从AngularJS Documentation起
您需要的是:$timeout([fn], [delay], [invokeApply], [Pass]);
在您的情况下:
// Set the delay in milliseconds: 1000ms = 1s
var delayInterval = 1000;
// A function to update the time
function updateTime() {
// Some code to update time...
}
// Pass the updateTime function as first parameter and the deplayInterval as the second parameter to the AngularJS $timeout function.
$timeout(updateTime, delayInterval);
在updateTime()
函数中,您可以间隔放置想要执行的代码(无论您需要什么),然后updateTime()
毫秒将调用一次delayInterval
函数。