今日、Angular で ng-click ディレクティブを使用してボタンをクリックするときの問題に対処していました。デスクトップでは明らかに時間の遅延は見られませんでしたが、iPad で Phonegap アプリケーションを実行すると問題が発生しました。お見せしましょう。この遅い動作を引き起こしたコード、同じ症状を持つ2つの例があります:
例 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" を計算しようとすると、ボタンのクリックが遅くなり、アクティブ状態が長くなります。
これについてのアイデアはありますか?
少なくとも私は遅いことの原因を知っていますが、なぜだろう!
ご協力いただきありがとうございます