窗口调整大小指令

2024-02-29

我试图在窗口调整大小时调整 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.windowHeight in scope.onResize,它似乎不适用于ngStyle

我是否仍然忽略了什么?

EDIT:

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

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


我认为您忘记通过调用来触发摘要循环scope.$apply();在......的最后scope.onResize method

Anyways, I used following directive (took from HERE https://stackoverflow.com/questions/14703517/angular-js-set-element-height-on-page-load) that works for me:

Try to open debug view and change view height: Demo Fiddle http://jsfiddle.net/zbjLh/270/

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);   
 };

[EDIT]

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

Demo 3Fiddle http://jsfiddle.net/zbjLh/506/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

窗口调整大小指令 的相关文章

随机推荐

  • 使用 ASIHTTPRequest 将文件从 iPhone 上传到服务器

    我一直在尝试上传文件 登录 zip 使用 ASIHTTPRequest 库从 iPhone 到 Mac OS X Snow Leopard 中的内置 Apache 服务器 我的代码是 NSString urlAddress NSString
  • CSS:选择最后排序的 Flex 子项

    给定任意数量的具有内联的 Flexbox 子项order用于排序的属性 如何选择 CSS 中最后一个排序的元素 ul style display flex li a li li b li li c li li d li li e li ul
  • 在没有 #include wchar 的 GCC C 中,前缀 L"..." 代表什么?

    也就是说 为什么unsigned short var L 工作 但是unsigned short var L 才不是 L 属于类型wchar t 它可以隐式转换为unsigned short L 属于类型wchar t 2 不能隐式转换为u
  • 如何使用OpenID或OAuth进行内部第一方认证?

    我正在为一组 RESTful Web 应用程序的用户开发一个内部身份验证系统 我们的目的是 用户应该能够通过 Web 表单登录一次 并能够适当访问我们域中的所有这些 RESTful 应用程序 这些应用程序可能分布在跨许多服务器的私有云中 我
  • 接下来Js Router.push不是函数错误

    当我尝试使用 Router push 进行重定向时 出现以下错误 TypeError next router WEBPACK IMPORTED MODULE 3 Router push is not a function 我正在尝试从 cr
  • 记录 ASP Web API 操作的持续时间

    我正在使用 ActionFilter 来记录 ASP NET Web API 项目的所有操作调用 OnActionExecuted 方法讲述了很多有关正在发生的事情的信息 我只是不知道如何找到一种有效的方法来测量执行时间 像这样的事情应该可
  • pandoc 在转换为 pdf 时不会对代码块进行文本换行

    我正在使用 pandoc 和 xelatex 引擎将 markdown 转换为 pdf 我像这样运行 pandoc pandoc s backbone fundamentals md o backbone fundamentals pdf
  • SpecFlow - 重试失败的测试

    有没有办法实现AfterScenario在失败的情况下重新运行当前测试的钩子 像这样的东西 AfterScenario retry public void Retry if ScenarioContext Current TestError
  • 当 C 表达式中发生整数溢出时会发生什么?

    我有以下 C 代码 uint8 t firstValue 111 uint8 t secondValue 145 uint16 t temp firstValue secondValue if temp gt 0xFF return tru
  • 在 drools-camel-server 上重新加载远程 drools guvnor 资源

    我正在使用 drools camel server 5 4 Final 来执行从 jboss AS7 上的 guvnor 获取的规则 如下所示
  • 如何清除字符串流变量?

    我已经尝试过几件事了 std stringstream m m empty m clear 两者都不起作用 对于所有标准库类型的成员函数empty 是一个查询 而不是一个命令 即它的意思是 你是空的吗 而不是 请扔掉你的东西 The cle
  • 列名作为 PL/SQL ORACLE 中的变量

    我想要一个代码 其中我将列名声明为变量 然后使用此变量从某个表中检索所需的列 DECLARE col n VARCHAR 100 X BEGIN select col n from my table END Oracle 中最简单 最明确的
  • 确定 Ravenscar 程序中堆栈使用情况的最佳实践

    我正在使用 Ravenscar 子集编写一个 Ada 程序 因此 我知道执行时正在运行的任务数量 该代码是由 gcc 编译的 fstack check https gcc gnu org onlinedocs gnat ugn Stack
  • 使用 SQL Server 2012 生成包含一天中各小时的日历表

    问题陈述 我在消防部门工作 正在对我的数据进行统计分析 一个问题是生成一个日历年中每天每小时的服务呼叫数量 我需要一张可以连接到一年中每一天和每天每小时的火灾事件的表 我希望的是以下内容 使用军事时间 2017 年 1 月 1 日 00 0
  • 如何隐藏任务栏条目但保留窗口窗体?

    我想隐藏任务栏条目以最大化有效空间 因为该应用程序有一个系统托盘图标 我不需要任务栏条目 该应用程序不允许您只有一个系统托盘而不是两者都有 如何隐藏任务栏条目但保留窗口窗体 您的申请是用什么语言编写的 你想要的API调用被称为设置窗口长度
  • 删除 UIPopoverPresentationController 后面的调光视图

    我正在尝试删除使用 UIPopoverPresentationController 呈现的弹出窗口后面的变暗视图 我已经实现了自定义 UIPopoverBackgroundView 但似乎没有办法摆脱这种变暗视图 我已经使用视图层次结构检查
  • initializer_list c++11 中的求值顺序

    在下面的代码中是否需要f1之前被调用f2 或反之亦然 还是未指定 int f1 int f2 std initializer list
  • 在 Python 列表推导式中缓存值

    我正在使用以下列表理解 resources obj get file for obj in iterator if obj get file None 有没有办法 缓存 obj get file 当它在 if 语句中检查时 这样就不必调用g
  • 使用 Google OAuth 2.0 的 Nginx 代理

    我有一个 Ubuntu 14 04 服务器 并且有一个运行在以下位置的流星应用程序localhost 3000在此服务器上 我的服务器的公共 FQDN 是sub example com Meteor 应用程序使用 Google OAuth
  • 窗口调整大小指令

    我试图在窗口调整大小时调整 div 大小 环顾四周后 似乎使用指令是最好的解决方案 模板 div div 指示 myApp directive elheightresize window function window return lin