2016-07-01 13 views
1

私はちょうど上にスクロールしたいです。コントローラからAngularJSのスクロールが機能しない

私はこれを試してみました:

$ window.scrollToは(0、0);

これはうまくいかず、どちらもwindow.scrollTo(0,0)を実行しませんでした。それから私は試しました:

$ location.hash( 'top'); //ビューでの使用

$ anchorScroll();

これも機能しませんでした。 私はスクロールのためのいくつかのカスタム角度モジュールを見てきましたが、とにかく簡単なものにもっと多くのコードを使用するのは本当に好きではありません。おそらくコントローラ/ビューに何か問題がありますか?ここで

は私のコントローラです:

.controller('PageCtrl', function ($scope, $stateParams, $window, $http, $ionicLoading, $ionicPopup, $timeout, $anchorScroll, $rootScope, $location, $compile) { 

var controller = this; 

$rootScope.$on('$stateChangeStart', 
    function (event, toState, toParams, fromState, fromParams, options) { 
     if (toState.name == 'app.page') { 
      if(fromState.name != 'app.page2') 
       controller.init(); 
     } 
    }); 

this.init = function() { 
    $ionicLoading.show({ 
     content: 'Logging in', 
     animation: 'fade-in', 
     showBackdrop: true, 
     maxWidth: 200, 
     showDelay: 1 
    }); 

    $window.scrollTo(0, 0); //should it be here? 
    window.scrollTo(0, 0); //not working at all?? 

    ..... 


} 


...... 

は、テンプレート:

<style> 
    ... 
</style> 

<ion-view view-title="something" ng-init="pgctrl.init()"> 
    <ion-nav-buttons side="right"> 
     <button class="button button-calm" ng-click="pgctrl.init()"> 
      New 
     </button> 
    </ion-nav-buttons> 
    <ion-content class="has-header" padding="true"> 
     ... 
    </ion-content> 
</ion-view> 
の.configで

App.js:

.state('app.page', { 
     url: '/page', 
     views: { 
      'menuContent': { 
       templateUrl: 'templates/page.html', 
       controller: 'PageCtrl as pgctrl' 
      } 
     } 
    }) 
+1

ウィンドウのスクロールイベントに 'stateChangeSuccess'を使用すると、遷移が完了したときに起動されるようになりますか? – anpsmn

答えて

0

あなたはjQueryのを使用して反対していない場合(これを使用とにかく使用しています)、これをやろうとする可能性があります。 this.init

$('body, html').animate({scrollTop: $('.view').offset().top}, "slow"); 

テンプレートで

<ion-view view-title="something" class="view" ng-init="pgctrl.init()"> 
    <ion-nav-buttons side="right"> 
     <button class="button button-calm" ng-click="pgctrl.init()"> 
      New 
     </button> 
    </ion-nav-buttons> 
    <ion-content class="has-header" padding="true"> 
     ... 
    </ion-content> 
</ion-view> 
0

私は解決策を見つけました。私はこの上にion-nav-buttonsを持っているので、 "上にスクロールする"と思うと、私たちはすでにそこにいると思うでしょう。 ionicをスクロールさせる方法を探した後、私はこれを見つけました:

$ionicScrollDelegate.scrollTop(true); //where true says whether to animate it 

それは仕事をしました。これを解決する手助けをした人にも感謝します!

0
$('html, body').animate({scrollTop: '0px'}, 400); 

単純にthis.400をミリ秒単位で使用できます。 0pxは垂直スクロール位置です。

関連する問題