2017-01-05 6 views
0

私は、ページがスクロールされたときに/で要素のクラスを切り替えることを試みています。AngularJS:ウィンドウスクロールイベントにクラスバインディングを切り替えることができないのはなぜですか?

私はthis SO threadに従っていますが、ディレクティブで連鎖しようとすると、私はログステートメントに到達しません。

角度のドキュメントと一緒にやってみると、私はこのようなファイルcomponent.jsを持っています。私は、表示するログステートメントを得ることができますが、クラスは決してトグルされます。

dashboard.component.js

angular.module('dashboard') 
    .component('dashboard', { 
    'templateUrl': 'dashboard/dashboard.template.html', 
    controller: function dashboardController($scope, $window, $mdSidenav) { 
     var primaryAppBar = angular.element(document.querySelector('#primaryAppBar')); 

     angular.element($window).bind('scroll', function() { 
      if (this.pageYOffset > 0) { 
       console.log('add shadow'); 
       $scope.boolChangeClass = true; 
      } else { 
       console.log('remove shadow'); 
       $scope.boolChangeClass = false; 
      } 
     }); 
     ... 

APP-bar.template.html

<md-toolbar id="primaryAppBar" ng-class="{'md-whiteframe-1dp':boolChangeClass}"> 
... 
+1

_dashboard.component.js_で変更している範囲は_app-bar.template.html_と同じですか?それが何であるかはわかりません。 –

+0

@HarrisWeinsteinどのくらい私が学ばなければならないかは、痛いほど明白です。それは実際問題でした。どうもありがとうございます! – Damon

+0

うれしかった!私はあなたが解決済みとマークすることができるように答えを追加します。 –

答えて

0

dashboard.component.jsにおける範囲と同じ範囲でありませんapp-bar.template.htmlそれらが同じコントローラの下にあるか、boolChangeClass変数を渡す何かを提供してください。

関連する問題