12

Is there a way to call the orientationchange event inside an AngularJS directive?

I'm currently working with angular-masonry and I'm trying to update/refresh masonry when the orientation of the mobile device changes.

I've found this but I'm wondering how to do this with the $window service inside Angular

window.addEventListener("orientationchange", function() {
  // Announce the new orientation number
  console.log(window.orientation);
}, false);
tdhulster
  • 1,531
  • 3
  • 18
  • 32

3 Answers3

32
angular.element($window).bind('orientationchange', function () {

});
Matanya
  • 6,233
  • 9
  • 47
  • 80
user1325394
  • 561
  • 5
  • 7
6

Hope this helps. Attach directive as attr, to body. Tested with IPhone 5.

'use strict';

angular.module('appModuleNameHere')
    .directive('DirPrefixNameOrientationChange', ['$rootScope',function ($state) {
    return {
        restrict: 'A',
        replace: true,
        link: function postLink($scope, element, attrs) {

            element.bind('orientationchange', function () {
                $state.go($state.current, {}, {reload: true});
            });

        }
    };
}]);
Nick Taras
  • 696
  • 8
  • 15
4

I implemented it this way:

$window.addEventListener('orientationchange', function() {
  your code here
}, false);

What do you think?

Comments are welcome.

fmquaglia
  • 407
  • 2
  • 11
  • 20