2016-09-15 4 views
0

ウィンドウのオフセットをドキュメントの上部からログに記録したいが、jqueryスクロールが機能しない。バニラのjavascriptのスクロールイベントリスナーは角度で動作しますか?anglejsでvanilla javascript scrollイベントが動作する

app.directive('owlCarouselItem', function($touch, $timeout, $rootScope, $window){ 
    return { 
     restrict: 'C', 
     transclude: false, 
     link: function(scope, element) { 
      // this is the part of my directive the on scroll event is not firing 
       $('html, body').on('scroll', function() { 
        if($(this).scrollTop() == 0){ 
         console.log($(this).scrollTop()); 
         canSwipeDown = true; 
        }else{ 
         console.log($(this).scrollTop()); 
         canSwipeDown = false; 
        } 
       }); 
+1

はあなたが私たちを見ることができますあなたは何をやったのですか、コントローラ/指令などどこでこれを実装していますか? jQueryは特にAngularJS(角2ではなく)のスクロールを検出するためにうまく動作するはずです – JosephGarrone

+0

なぜあなたは 'restrict:C'を使用していますか?あなたは真剣に 'owlCarouselItem'をコメントとして使っていますか? –

答えて

1

angular.element($ウィンドウ)を使用してこのコードを試してみてください。

.directive('scrollDir', function($window) { 
    return { 
     restrict: 'EAC', 
     link: function(scope, attrs, element) { 
      var canSwipeDown = false 
      // this is the part of my directive the on scroll event is not firing 
      angular.element($window).on('scroll', function() { 
       canSwipeDown = element.scrollTop() === 0 
       scope.$apply() 
      }); 
     } 
    }; 
}); 

そしてこの HTMLのようにあなたはbodyタグ にディレクティブを固執することができます:

<body scroll-dir> 
+0

私はあなたのコードを改善し、冗長性を取り除き、$ scopeを追加しました。イベントリスナーは、角度ダイジェストサイクルの一部ではありません。あなたはおそらく彼らが 'canSwipeDown'をどのように消費するかをOPに説明すべきです。 –

+0

すばらしいおかげです。 – SuperComupter

関連する問題