【问题标题】:AngularJS - ng-if - show when body has a classAngularJS - ng-if - 显示主体何时有一个类
【发布时间】:2016-12-19 23:21:34
【问题描述】:

我想使用ng-if 显示/隐藏一个元素

例如如果 body 有特定的类,我想显示一个元素

我尝试了以下方法,但没有成功 - 这甚至是有效的表达方式吗?

<div ng-if="document.querySelector('body').className.indexOf('bodyHasThisClass') >= 0"></div

非常感谢任何建议。这是一个笨拙的例子:http://plnkr.co/edit/kzXXg0sne8nyQZuufao7?p=preview


来自 AngularJS 文档:https://docs.angularjs.org/guide/expression

Angular 表达式无法访问窗口、文档或位置等全局变量。这种限制是故意的。它可以防止意外访问全局状态——这是微妙错误的常见来源。

【问题讨论】:

    标签: angularjs angular-ng-if


    【解决方案1】:

    如何在指令中添加控制器

    app.directive('wrapperDirective', function() {
    return {
        restrict: 'A',
        templateUrl: 'wrapper-directive.html',
        replace: true,
        transclude: true,
        controller: function($scope){
          $scope.a = (document.querySelector('body').className.indexOf('bodyHasThisClass')>= 0)? true : false;
          $scope.b = (document.querySelector('body').className.indexOf('noSuchClass')===-1)? true:false;
    
        }
    };
    });
    

    在模板中:

    <div ng-if="a==true">
        visible if body has class bodyHasThisClass
    </div>
    <div ng-if="b==false">
        this should be hidden
    </div>
    

    【讨论】:

    • 我在考虑添加一个控制器?那么如何在不同的指令/控制器之间共享这个控制器?
    猜你喜欢
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    相关资源
    最近更新 更多