我有一個大的我用一個按鈕導航到的項目列表。如果我立即加載列表控制器的數據,那麼在你看到頁面發生任何改變之前,角度會產生一個滯後時間。如果我在列表控制器中等待一段時間,等待50ms,則屏幕會立即變化,並且按鈕感覺響應更快。等待模板在動作之前被渲染?
我的問題是,什麼是「正確」的方式來做到這一點,因爲我非常確定setTimeout在這裏是一個巨大的黑客攻擊。
編輯與Plunkr:http://plnkr.co/edit/VqEiiAFZfV1hoXadw0vf?p=preview
此外,從plunkr一些代碼,因爲堆棧溢出要求是出於某些原因:
Test.controller('ListController', function($scope) {
var arr = [];
for (var i=0; i<5000; i++) {
arr[i] = i;
}
$scope.list = arr
});
Test.controller('ListThatWaitsController', function($scope) {
var arr = [];
for (var i=0; i<5000; i++) {
arr[i] = i;
}
setTimeout(function() {
$scope.list = arr;
$scope.$apply()
}, 10);
});
在你看到頁面有任何改變之前,你的意思是什麼?)你可以發佈一個運動員嗎?這種行爲對我來說似乎不對。 – pixelbits
很難看出延遲50ms是否會造成明顯的視覺差異 – charlietfl
延遲不是造成差異的原因。區別在於按下按鈕後是否立即發生,或者實際上是否已準備好顯示。 – Joren