我试图做一个div调整大小时窗口调整大小,环顾四周后,似乎使用指令是最好的解决方案。
模板:
<div elHeightResize ng-view ng-style="{ height: windowHeight }"></div>
指示:
myApp.directive('elheightresize',['$window',function($window) { return { link: function(scope,elem,attrs) { scope.onResize = function() { var header = document.getElementsByTagName('header')[0]; elem.windowHeight = $window.innerHeight - header.clientHeight; } scope.onResize(); angular.element($window).bind('resize',function() { scope.onResize(); }) } } }])
虽然我可以在scope.onResize中记录elem.windowHeight,它似乎不适用于ngStyle
我还在俯瞰什么吗?
编辑:
< divng-view resize style =“height:{{windowHeight}} px”>
这个解决方案似乎工作,仍然感兴趣的为什么使用ngStyle不工作。
我想你忘了通过调用范围来消化摘要周期。$ apply();在scope.onResize方法的结尾
原文链接:/angularjs/145972.html无论如何,我使用以下指令(从HERE)为我工作:
尝试打开调试视图和更改视图高度:演示Fiddle
app.directive('resize',function ($window) { return function (scope,element,attr) { var w = angular.element($window); scope.$watch(function () { return { 'h': w.height(),'w': w.width() }; },function (newValue,oldValue) { scope.windowHeight = newValue.h; scope.windowWidth = newValue.w; scope.resizeWithOffset = function (offsetH) { scope.$eval(attr.notifier); return { 'height': (newValue.h - offsetH) + 'px' //,'width': (newValue.w - 100) + 'px' }; }; },true); w.bind('resize',function () { scope.$apply(); }); } });
用法:
<div ng-style="resizeWithOffset(165)" resize notifier="notifyServiceOnChage(params)" > /** ... */ </div>
虚拟控制器使用方法:
$scope.notifyServiceOnChage = function(){ console.log($scope.windowHeight); };
[编辑]
这里是演示没有jQuery库通过使用innerHeight
演示3Fiddle