我有一個Angular應用程序,並且我在使用Javascript和超時的按鈕上使用活動狀態(顏色更改)。像這樣的事情在我的服務:角度狀態轉換暫停超時
HTML:
<div class="btn-numeric" ng-mousedown="highlightButtonThenAddValue(4, $event)">4</div>
控制器代碼:
var abc = [];
var highlightButtonTouch = function (event, addClassName) {
var element = event.currentTarget;
var currClasses = element.classList.add(addClassName);
setTimeout(function() {
element.classList.remove(addClassName);
}, 100);
$scope.highlightButtonThenAddValue = function (value, event) {
log.debug("button pressed on screen, button value: " + value);
highlightButtonTouch(event, 'btn-numeric-active');
$scope.add_value(value);
};
$scope.add_value(value) {
abc.push(value);
if (abc.length === 6) {
$state.go(newState);
}
}
這工作正常,如果按鈕顏色的變化是相同的狀態。但是,當添加足夠的值時,我需要使用state.go來更改狀態,並且在這種情況下,即使在100ms之後,類'btn-numeric-active'也不會被刪除,而是將css更改爲添加btn-numeric-active停留直到狀態改變。我在新狀態上定義了一些解決方法 - 我正在將API調用到服務器。
只有將Chrome性能選項卡中的CPU降至10Xslowdown時,才能看到此問題。但我的應用程序應該運行在慢速機器上。
有沒有人遇到過類似的問題?對於如何解決這個問題,有任何的建議嗎 ?
事情我已經嘗試:
我不能使用:active僞類,因爲這使得即使在觸摸和拖拽活躍狀態,而點擊未註冊。
我已經嘗試將元素定義爲rootScope變量,但那也不能解決問題。
任何建議是值得歡迎的。
你可以嘗試使用'$ timeout'而不是'setTimeout'嗎? – Icycool
@lcycool試過。行爲沒有變化。 – Neha