2016-01-03 11 views
6

これは奇妙な問題です。SafariでIOS 8.3を使用した角のクリックに関する問題

Angularを使用してWebアプリケーションを構築している間、上司はng-clickディレクティブを使用しているアプリケーションのすべてのボタンが機能していないことを発見しました。

今、この問題はiphone 6 with IOS 8.3 and using the safari browserでのみ発生します。

iPhone5(すべてのバージョン)、iPhone 6(IOS9)、Windows用のSafari、その他のすべてのブラウザ(モバイルとデスクトップ)でテストされたとき、ng-clickは魅力的です。

アプリはAngular 1.4.3を使用してビルド中です。

あなたが見ることができるように、これは、それについて何も特別なボタンのコードではありません:

<button class="btn calculate-button" ng-click="onCalculate()">Calculate</button> 

とコントローラで:

$scope.onCalculate = function() { 
    //Do something... And then: 
    $state.go('someplace'); 
}; 



私がいた多くの変更を試してみましたng-touch,ng-bindなど、私自身のクリック指令を以下のように作成してください:

.directive('basicClick', function($parse, $rootScope) { 
    return { 
     compile: function(elem, attr) { 
      var fn = $parse(attr.basicClick); 
      return function(scope, elem) { 
       elem.on('click', function(e) { 
        fn(scope, {$event: e}); 
        scope.$apply(); 
       }); 
      }; 
     } 
    }; 
}); 

問題の適切な解決策が見つかりませんでした。

ありがとうございました。

答えて

8

私は最後にそれを修正。

問題は、機能の//Do something... And then:にありました。 途中で、その関数はブラウザのローカルストレージにいくつかのデータを保存します。

私の上司はSafariでプライベートブラウジングを使用していました。明らかにSafariでプライベートブラウジングを使用すると、ブラウザーはローカルストレージにデータを保存せず、例外をスローしてコードを強制終了します。

まあ、ありがとうございます。

19

IOS 8.4.1アップデートには、ng-linkを停止してng-clickを動作させる既知の問題があります。

「touchstart click」を使用すると、この問題を解決できる可能性があります。

app.directive("ngMobileClick", [function() { 
    return function (scope, elem, attrs) { 
     elem.bind("touchstart click", function (e) { 
      e.preventDefault(); 
      e.stopPropagation(); 

      scope.$apply(attrs["ngMobileClick"]); 
     }); 
    } 
}]) 

HTMLコール:ng-mobile-click="onCalculate()"

+0

ありがとうございました。できるだけ早く試してみて、それがうまくいくかどうか教えてあげましょう。 – Gal

+0

解決策が見つかりました。それはそうではありませんでした。とにかくありがとう! – Gal

+0

これは私のために働いた、ありがとう。 @Iamisti既知の問題の説明などのリンクがありますか? –