首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改ng-class from指令

修改ng-class from指令
EN

Stack Overflow用户
提问于 2015-03-16 21:04:11
回答 1查看 46关注 0票数 0

我正在尝试编写一个指令来监视元素的宽度,并有条件地设置一个ng-class变量。我不太确定我是不是在用正确的方式去做这件事,希望能得到一些帮助!我的html

代码语言:javascript
复制
    <div ng-class="{'compact' : compact}" calc-width>stuff here</div>

我的指令(目前为止)

代码语言:javascript
复制
    app.directive('calcWidth', function() {
        return {
            restrict: 'A',
            link: function(scope, elem, attrs) { 
                var width = elem[0].clientWidth;
                scope.compact = false;
                if (width < 600) {
                    scope.compact = true;
                }
            },
        };
    });

首先,这并没有像预期的那样修改ng-class变量。其次,我如何“观察”元素宽度的变化?通常我可以只使用窗口大小调整函数,但是元素的大小在其他情况下也会改变,比如侧面板打开。我真的应该这么做吗?或者最好是从另一个控制面板的指令/控制器/服务中触发这个指令?

EN

回答 1

Stack Overflow用户

发布于 2015-03-16 21:11:54

您需要将链接函数的内容包装在$watch函数中。

代码语言:javascript
复制
link: function(scope, elem, attrs) { 
    scope.$watch(function () { // this function will be executed for each digest cycle.
        var width = elem[0].clientWidth;
        scope.compact = false;
        if (width < 600) {
            scope.compact = true;
        }
    })
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29077540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档