当前位置: 首页 > 面试题库 >

Angular.js:设置页面加载时的元素高度

阙奇思
2023-03-14
问题内容

我是AngularJS新手。我想创建网格(使用ng-grid),其高度取决于窗口高度,即。$('.gridStyle').height($(window).height() - 100);

我已经写了指令:

app.directive('resize', function($window) {

    return function(scope, element) {

        function applyHeight() {
            scope.height = $window.innerHeight;
            $('.gridStyle').height(scope.height - 100);
        }

        angular.element($window).bind('resize', function() {
            scope.$apply(function() {
                applyHeight();
            });
        });

        applyHeight();
    };
});

当我调整浏览器窗口的大小但在第一次加载网站时未应用样式时,此方法效果很好。我可以在哪里放置代码以初始化身高?


问题答案:

我在为自己寻找解决同一问题的方法时遇到了您的帖子。我使用了基于多个帖子的指令来组合以下解决方案。您可以在这里尝试(尝试调整浏览器窗口的大小):http: //jsfiddle.net/zbjLh/2/

视图:

<div ng-app="miniapp" ng-controller="AppController" ng-style="style()" resize>
    window.height: {{windowHeight}} <br />
    window.width: {{windowWidth}} <br />
</div>

控制器:

var app = angular.module('miniapp', []);

function AppController($scope) {
    /* Logic goes here */
}

app.directive('resize', function ($window) {
    return function (scope, element) {
        var w = angular.element($window);
        scope.getWindowDimensions = function () {
            return { 'h': w.height(), 'w': w.width() };
        };
        scope.$watch(scope.getWindowDimensions, function (newValue, oldValue) {
            scope.windowHeight = newValue.h;
            scope.windowWidth = newValue.w;

            scope.style = function () {
                return { 
                    'height': (newValue.h - 100) + 'px',
                    'width': (newValue.w - 100) + 'px' 
                };
            };

        }, true);

        w.bind('resize', function () {
            scope.$apply();
        });
    }
})

仅供参考,我最初是在控制器(http://jsfiddle.net/zbjLh/)中工作的,但是从后来的阅读中发现,从Angular的角度来看,这是不明智的,因此现在我将其转换为使用指令。

重要的是,请注意true“watch”函数末尾的标志,用于比较getWindowDimensions返回对象的相等性(如果不使用对象,则删除或更改为false)。



 类似资料:
  • 我想更改页面加载时的“选择组件”值。我读了相关的帖子,那里提出的每一个解决方案都适用于点击按钮。然而,我想要的是在页面加载后设置值,而不需要任何用户操作。我拥有的是: 以及: 我有相同的代码附加到按钮上,并且它可以工作。它只是不适用于准备()函数。所以我的问题是:如何在页面加载后设置选择值? 完整html

  • 我尝试了几种等待JS脚本完成的方法,但都无济于事。点击按钮加载更多新闻或触发他们的事件似乎也没有帮助。 我的工作假设是,在JS脚本完成后,我不需要重新分配实例。对吗? 我也看到HTMLUnit的JS引擎在一些网站上不太好用。是这里的情况还是我只是漏掉了什么? 下面是我的代码: 还有,下面的警告是否相关?由于HtmlUnit生成大量的JS警告,我不确定哪些是重要的,哪些不重要。

  • 我使用Python 3和Selenium来自动化浏览器活动。在我正在工作的页面上,我有一个按钮,当点击时,它会加载一个下拉菜单。然而,在检查时,我相信下拉框是在点击按钮后生成的,因为我没有看到页面加载菜单的html。 我正在使用以下代码 html 这个菜单大概是通过JS加载的,我试图点击的按钮是文本帐户 这将加载网站,并单击下拉菜单。我在下拉菜单中看到按钮加载,我正试图让浏览器单击该按钮,但它从未

  • 问题内容: 当页面使用AJAX时可以使用隐式和显式等待,但是我想停止由于加载足够的元素而导致的加载。因为调用仅在页面加载完成后才返回,所以可以这样做吗? 问题答案: 是的,可以通过将功能设置为来实现。然后等待一个元素出现并调用以停止加载:

  • 当页面使用AJAX时,可以使用隐式和显式等待,但是当加载了足够的元素时,我希望停止由引起的加载。是否可以这样做,因为调用仅在页面加载完成时才返回。

  • 问题内容: 在PhantomJS中进行测试时如何设置元素高度? 我正在使用Jasmine框架在Karma上进行测试,并在PhantomJS无头浏览器上运行。我正在尝试测试与“无限滚动”(当用户滚动到容器元素底部附近时自动加载项目)有关的AngularJS指令。我 不 使用jQuery,也不希望(除非没有其他方法)。我正在使用 .clientHeight , .scrollTop 和 .scroll