【问题标题】:Directive for window resize not working窗口调整大小指令不起作用
【发布时间】:2016-10-05 16:44:21
【问题描述】:

我在 AngularJS 中创建了一个自定义指令。代码如下:

var esscom = angular.module('esscom',['ngMaterial' ,'ngMessages','ui.bootstrap','ui.router']);


esscom.directive('resize',[function($window){
    return function($scope){
        console.log("Inside resize dir");
        angular.element($window).bind('resize', function() {
            console.log("Window resize");
            if( $window.innerWidth <= 960){
                console.log("Returning ess background");
                angular.element("#view").addClass('essbackground');
            }
            $scope.$apply();
        })
    };
}]);

HTML如下:

<div resize id="view">
    <h1>Resize this</h1>
</div>

这行不通。永远不会检测到调整大小事件。我做错什么了吗?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    指令函数应该返回如下:

    esscom.directive('resize',['$window',function($window){
        return {
            link:function($scope){
                console.log("Inside resize dir");
                angular.element($window).bind('resize', function() {
                    console.log("Window resize");
                    if( $window.innerWidth <= 960){
                        console.log("Returning ess background");
                        angular.element("#view").addClass('essbackground');
                    }
                    $scope.$apply();
                })
            }
        };
    }]);
    

    你需要注入$window

    【讨论】:

    • 我提到了这个问题:stackoverflow.com/questions/23044338/window-resize-directive。这使我按照我在问题中键入的方式构建指令,尽管我知道它应该返回一个对象。但是您的语法也不起作用。我试过了。
    • 如果我没记错的话,resize事件会被浏览器窗口调整大小触发
    • 哦,你忘了注入$window。请参阅我的更新答案。
    猜你喜欢
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2020-04-17
    相关资源
    最近更新 更多