window height angular

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" 
    x-height-offset="100"
    x-width-offset="50"
    x-resize="resizeElement(element, width, height)"
    x-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) {
    $scope.resizeElement = function(element, width, height){
        element.style("width", width);
        element.style("height", height);
    };
}

app.directive('resize', function ($window) {
    return {
        restrict: 'A',
        scope: {
            widthOffset: "@",
            heightOffset: "@",
            resize: "&"
        },
        link: function (scope, element, attrs) {
		    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.width = (newValue.w - scope.widthOffset) + "px";
                scope.height = (newValue.h - scope.heightOffset) + "px";
                scope.resize(element, width, height);
		    }, true);
	
		    w.bind('resize', function () {
			    scope.$apply();
		    });
	    }
    }
});