gpt4 book ai didi

angularjs - 窗口调整大小指令

转载 作者:行者123 更新时间:2023-12-02 19:46:00 26 4
gpt4 key购买 nike

我试图在窗口调整大小时调整 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();
})
}
}
}])

虽然我可以登录elem.windowHeightscope.onResize ,它似乎不适用于 ngStyle

我是否仍然忽略了什么?

编辑:

<div ng-view resize style="height: {{ windowHeight }}px">

这个解决方案似乎有效,仍然对为什么使用ngStyle感兴趣没有工作。

最佳答案

我认为您忘记通过在 scope.onResize 方法末尾调用 scope.$apply(); 来触发摘要循环

无论如何,我使用了以下对我有用的指令(取自 HERE ):

尝试打开调试 View 并更改 View 高度:演示 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>

虚拟 Controller 方法用法:

$scope.notifyServiceOnChage = function(){
console.log($scope.windowHeight);
};

[编辑]

这里是使用 innerHeight 的演示,没有 jQuery 库

演示 3 Fiddle

关于angularjs - 窗口调整大小指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23044338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com