我有一个大的我用一个按钮导航到的项目列表。如果我立即加载列表控制器的数据,那么在你看到页面发生任何改变之前,角度会产生一个滞后时间。如果我在列表控制器中等待一段时间,等待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