more resize

by Ryan

HTML

<script src="http://code.angularjs.org/1.0.0/angular-1.0.0.js"></script>
<div ng-app="miniapp" ng-controller="AppController" ng-style="style()" resize>
    window.height: {{windowHeight}} <br />
    window.width: {{windowWidth}} <br />
</div>

CSS

div { border:1px solid red; }

JavaScript

var app = angular.module('miniapp', []);

function AppController($scope) {
    /* Logic goes here */
}

app.directive('resize', function ($window) {
    return {
        restrict: 'A',
        scope: {
            widthOffset: "@",
            heightOffset: "@",
            resize: "&"
        },
        link: function (scope, element) {
            var w = angular.element($window);
            scope.getWindowDimensions = function () {
                return { 'h': w.height(), 'w': w.width() };
            };
            scope.$watch(scope.getWindowDimensions, function (newValue, oldValue) {
                scope.windowHeight = newValue.h;
                scope.windowWidth = newValue.w;
                
                scope.style = function () {
                    return { 
                        'height': (newValue.h - 100) + 'px',
                        'width': (newValue.w - 100) + 'px' 
                    };
                };
                
            }, true);
        
            w.bind('resize', function () {
                scope.$apply();
            });
	    }
    }
})