0

私は angular-app に取り組んでおり、matchmedia で向きの変更を実装しようとしています。ページを最初にロードするとき、コントローラーでコード行を実行して、横向きかどうかを確認します。

$scope.landscape = matchmedia.isLandscape();

これはうまくいきます。しかし、向きの変化を検出したい場合は、次のコードを使用します。

angular.element($window).bind('orientationchange', function () {
    $route.reload();
});

そのため、向きが変わると、ページがリロードされ、再び向きが検出されます。しかし今、それは反対のことを返します。したがって、true である必要がある場合に、landscape == false と表示されます。これがなぜなのか誰か知っていますか?または、方向の変更に対処するために間違った手法を使用していますか? 前もって感謝します!

4

2 に答える 2

0

あなたは試すことができます:

angular.element($window).bind('resize orientationchange', function (e) {
    console.log('resize or orientationchange: ' + e.type);
    $route.reload();
});

Browser Simulator では、向きが変わると「サイズ変更」されます。しかし、デバイスでは「orientationchange」が表示されます。

これは私がオンラインで見つけた例です。デスクトップのクロムでは機能していませんが、デバイスのクロムでは機能しています:

http://codepen.io/xAlien95/pen/EaNVNW

于 2016-03-04T14:35:52.337 に答える