由于我目前正在尝试构建基于angularJS的智能镜像系统,因此我开始制作一个基本的时钟组件。在完成了一些角度之前,但没有使用组件结构,我决定给这个镜头。AngularJS简单时钟组件
的angularJS component tutorial很快就学会了我不使用$scope
,但this
相反,我写我的组件,如下所示:
angular
.module('smartMirrorFrontend', [])
.component('clock', {
template: '<div class="iface-component" id="component-clock">' +
'<h1>Clock component Angular</h1>' +
'<span id="clock-hours" >{{ $ctrl.hh }}</span>:' +
'<span id="clock-minutes">{{ $ctrl.mm }}</span>:' +
'<span id="clock-seconds">{{ $ctrl.ss }}</span>' +
'</div>',
controller: function ClockController($interval){
this.hh = this.mm = this.ss = null;
this.clock = function(){
const d = new Date();
this.hh = ('0' + d.getHours()).slice(-2);
this.mm = ('0' + d.getMinutes()).slice(-2);
this.ss = ('0' + d.getSeconds()).slice(-2);
};
this.clock();
$interval(this.clock, 1000);
}
});
现在,这一切都运行完美,除了一个事实,即既不$interval
也不$timeout
似乎每秒钟都可以开启我的功能。
这里是一个小问题:我已经检查了其他在计算器上的AngularJS时钟问题,但没有实现它在this
样式中,而是使用$scope
代替。他们也只是把值放在一个范围内,而我需要这个时钟能够在垂直模式下(如此从上到下)在单独的跨度上(如模板部分所示)
Web浏览器中的控制台是没有显示任何问题,组件会显示并正确加载时间,这意味着该功能只会触发一次。该组件被插入到html中使用<clock></clock>
我的问题是:为什么我的间隔不能正常工作,我该如何使它工作?
谢谢,这实际上帮助解决了这个问题,并教会了我一些关于'this'标识符的范围。 – ZeroThe2nd