2016-10-05 2 views
0

私はAngularJSでカスタムディレクティブを作成しました。次のようにコードは次のとおりです。ウィンドウのサイズ変更の指示が働かない

var esscom = angular.module('esscom',['ngMaterial' ,'ngMessages','ui.bootstrap','ui.router']); 


esscom.directive('resize',[function($window){ 
    return function($scope){ 
     console.log("Inside resize dir"); 
     angular.element($window).bind('resize', function() { 
      console.log("Window resize"); 
      if($window.innerWidth <= 960){ 
       console.log("Returning ess background"); 
       angular.element("#view").addClass('essbackground'); 
      } 
      $scope.$apply(); 
     }) 
    }; 
}]); 

次のようにHTMLは次のとおりです。

<div resize id="view"> 
    <h1>Resize this</h1> 
</div> 

これはうまく動作しません。 resizeイベントは決して検出されません。私は間違って何かしていますか?

答えて

0

ディレクティブの機能は次のように返す必要があります:

esscom.directive('resize',['$window',function($window){ 
    return { 
     link:function($scope){ 
      console.log("Inside resize dir"); 
      angular.element($window).bind('resize', function() { 
       console.log("Window resize"); 
       if($window.innerWidth <= 960){ 
        console.log("Returning ess background"); 
        angular.element("#view").addClass('essbackground'); 
       } 
       $scope.$apply(); 
      }) 
     } 
    }; 
}]); 

あなたは$windowを注入する必要があります。

+0

私はこの質問に言及しました:http://stackoverflow.com/questions/23044338/window-resize-directive。これは、私が質問をタイプしたのと同じように、オブジェクトを返すべきであることを知っていますが、私に指示を作りました。しかし、あなたの構文もうまくいきません。私はそれを試した。 –

+0

もし私が間違っていないならば、 'resize'イベントはブラウザウィンドウのサイズ変更によって引き起こされます –

+1

ああ' $ window'を忘れた。私の更新された答えを見てください。 – Shawn

関連する問題