When I used a bootstrapped 3.0 template together with Angular JS, I found out that the height of the DIV layer where ng-view resides does not change its height to fill the window viewport height if its content height is small.
I have not found any solution in any forum regarding this problem so what I did was to create a directive and added it to the HTML element where ng-view is located.
My template contains only a horizontal bar at the top, while the bottom is occupied by the content where ng-view is.
This is my HTML:
What the code does, is that once the ng-view works its magic and populates the HTML contents to the DIV layer, the Angular JS Directive will wait for the DOM till it is ready. Angular JS also has its own way to detect if a DOM is ready the same way JQuery does, but with a different syntax.
Once it is ready, I call on the $(window).resize() function to simulate a window viewport resize, then do the formula to adjust the height of the DIV content layer to fill the extra height of the window viewport.
Without calling the resize() function the height adjustment will not work when, say, you have a tab element and one of those tabs contains small content.
If you have a footer at the top, then simply add the footer height to the computation.
This post is about JQuery’s modal() function and not the dialog() function. There is the common problem that when the content is long, the height of the modal window does not automatically adjust based on content height.
To bypass this problem, you need to listen to the show event and resize the modal window. This is how to do it.
This code sets the width to auto as well. However, you can change the width value however you see fit and the height will still auto-adjust itself once the show() function is called.
If you noticed in the code, the max-height attribute is set to 100%. If your content is too long, chances are your modal window will be displayed beyond the screen height. To ensure that the height stays within the display screen height, you can use this value instead: