由於我目前正在嘗試構建基於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