今天我正在处理一个问题,当我在angular中使用ng-click指令点击一个按钮时,在桌面上显然没有看到任何时间延迟,但是当在iPad中运行Phonegap应用程序时,问题就出来了,让我向你展示导致这种缓慢行为的代码,我有两个具有相同症状的示例:
示例1
$scope.addProductFn = function(index){
var product = $scope.products[index];
$scope.order.unshift(product);
/* the code below make the click slow */
$scope.orderTotal = 0;
angular.forEach($scope.order, function(value, key) {
$scope.orderTotal += value.price;
});
};示例2
$scope.addProductFn = function(index){
var product = $scope.products[index];
$scope.order.unshift(product);
/* the code below make the click slow */
$scope.orderTotal += product.price;
};如果我删除这些行,单击response work as remove,速度非常快
$scope.addProductFn = function(index){
var product = $scope.products[index];
$scope.order.unshift(product);
};下面是我显示总数的方式
<span class="header">Orden: {{ orderTotal | currency }}</span>正如你所看到的,没有复杂的代码,但当试图计算范围变量"$scope.orderTotal“时,点击按钮的速度很慢,活动状态变得更长。
对此有什么想法吗?
至少我知道是什么导致了缓慢的事情,但我想知道为什么!
谢谢你的帮忙
发布于 2014-07-17 04:35:36
慢行为对于移动设备来说是典型的,因为默认情况下,它们有300ms的延迟来检测doubletap。您可以使用fastclick库来绕过这一步
发布于 2014-07-17 11:21:45
你会pushPage()到有自己控制器的页面吗?首先,Onsen UI pushPage初始化目标页面的控制器,然后执行传输。因此,如果您在目标页面中编写繁重的逻辑,您的转换将会延迟。如果要延迟控制器的初始化,请使用$timeout来延迟。
app.controller('pushPageTargetPageCtrl', function($scope, $timeout){
//Delay Controller initialization and do page transition firstly.
$timeout(function(){
//Do Stuff
var sum = 0;
for(var i = 0; i < 999999; i++) {
sum += i;
}
}, 500);
});https://stackoverflow.com/questions/24789985
复制相似问题