【发布时间】:2014-05-27 11:35:32
【问题描述】:
我试图在窗口调整大小时调整 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
我还是忽略了什么吗?
编辑:
<div ng-view resize style="height: {{ windowHeight }}px">
这个解决方案似乎有效,但仍然对使用 ngStyle 不起作用的原因感兴趣。
【问题讨论】:
-
您的确切问题的答案(为什么
elem.windowHeight不适用于ngStyle)是您必须通过触发摘要循环手动应用它,因为.bind()方法不是被 Angular 拦截。因此,在事件处理程序的末尾(scope.onResize(); })之后)您应该添加scope.$apply();。