今天我正在处理一个问题,当使用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;
};
如果我删除这些行,请按预期单击响应工作,非常快
$scope.addProductFn = function(index){
var product = $scope.products[index];
$scope.order.unshift(product);
};
这就是我如何显示总数
<span class="header">Orden: {{ orderTotal | currency }}</span>
如您所见,没有复杂的代码,但在尝试计算范围var“$ scope.orderTotal”时,按钮上的点击速度很慢,活动状态会变长。
有关于此的任何想法吗?
至少我知道是什么导致这个慢的东西,但我想知道为什么!
感谢您的帮助
答案 0 :(得分:0)
移动设备的典型行为很慢,因为默认情况下它们有300毫秒的延迟来检测双击。您可以使用fastclick库
来绕过此问题答案 1 :(得分:0)
你是否将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);
});