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

如何基于ng-class设置的类应用AngularJS指令?

毕黎昕
2023-03-14
问题内容

我试图根据其类有条件地将指令应用于元素。

这是我的问题的一个简单案例,请参阅此小提琴中的结果。在此示例中,我使用了类名到ng- classwith的布尔形式的映射true。在我的实际情况下,我想使用函数的布尔结果。

标记:

<div ng-app="example">
  <div class="testcase">
    This will have the directive applied as I expect
  </div>
  <div ng-class="{'testcase':true}">
    This will not have the directive applied but I expect it to
  </div>
</div>

JS:

angular.module('example', [])
  .directive('testcase', function() {
      return {
          restrict: 'C',
          link: function(scope, element, attrs) {
              element.css('color', 'red');
          }
      }
    }
  );

为什么不将指令应用于div通过类的指令ng-class?我对AngularJS处理指令的顺序有误解吗?

我应该如何基于表达式的求值有条件地将指令应用于元素?


问题答案:

ng-class在编译过程 之后 ,只需在DOM上设置类。

应用指令的更好方法可能是通过HTML属性:

<div test-case>

当然,这不是有条件的,但我会将条件留给指令:

<div ng-app="example" ng-controller="exampleCtrl">
    <div test-case condition="dynamicCondition">Hello</div>
    <input type="checkbox" ng-model="dynamicCondition"/> Condition 
</div>

angular.module('example', [])
    .controller('exampleCtrl', function ($scope) {
        $scope.dynamicCondition = false;
    })
    .directive('testCase', function () {
    return {
        restrict: 'A',
        scope: {
            'condition': '='
        },
        link: function (scope, element, attrs) {
            scope.$watch('condition', function(condition){
                if(condition){
                    element.css('color', 'red');
                }
                else{
                    element.css('color', 'black');
                };
            });
        }
    }
});

请注意,伪指令名称为,testCase而不是testcase,该scope: {'condition': '='},位确保condition属性被同步并作为可用,scope.condition并且watch每次第一个值上的表达式更改值时就评估第二个参数。JsFiddle
在这里。

也许您还应该研究ng-switch

<div ng-switch="conditionFunction()">
  <div ng-when="true" test-case>Contents when conditionFunction() returns true</div>
  <div ng-when="false">Contents when conditionFunction() returns false</div>
</div>


 类似资料:
  • 本文向大家介绍AngularJS 基础ng-class-even指令用法,包括了AngularJS 基础ng-class-even指令用法的使用技巧和注意事项,需要的朋友参考一下 AngularJS ng-class-even 指令 AngularJS 实例 为表格的偶数行设置 class="striped": 运行结果:   Alfreds Futterkiste Germany Berglun

  • 问题内容: 我有一个简单的程序,它显示得分列表以及正值或负值的值。 我想做的是当值是Negative时,显示红色的背景CSS类,而当Positive时,显示绿色的CSS类。但是,由于某种原因,我总是在页面上看到 红色的 CSS类。 HTML: CSS: 问题答案: 我以前没有看过那种特殊的语法,其背后的原理是什么? 我在这里使用的方式是 那样有用吗? 为了提高可读性,您也可以将其委托给控制器 或者

  • 本文向大家介绍AngularJS基础 ng-class-odd 指令示例,包括了AngularJS基础 ng-class-odd 指令示例的使用技巧和注意事项,需要的朋友参考一下 AngularJS ng-class-odd 指令 AngularJS 实例 为表格的奇数行设置 class="striped": 运行结果: Alfreds Futterkiste Germany Berglunds

  • 问题内容: 我正在尝试使用切换元素的类 isAutoScroll(): 基本上,如果为true,我希望ng-class是,如果为false,我希望它为 我现在无法使用,并且在控制台中产生此错误 如何正确执行此操作? 编辑 解决方案1 ​​:(已过时) 编辑2 解决方案2: 我想更新解决方案,因为Stewie提供的应该是使用的一种。对于三元运算符,这是最标准的(对我而言,最容易阅读)。解决方案是 转

  • 本文向大家介绍angularJs的ng-class切换class,包括了angularJs的ng-class切换class的使用技巧和注意事项,需要的朋友参考一下 在angular中为我们提供了3种方案处理class: 1:scope变量绑定 2:字符串数组形式。 3:对象key/value处理。 第一种我们不推荐使用,看看其他两种解决方案: 字符串数组形式 字符串数组形式是针对class简单变化

  • 本文向大家介绍AngularJS基础 ng-href 指令用法,包括了AngularJS基础 ng-href 指令用法的使用技巧和注意事项,需要的朋友参考一下 AngularJS ng-href 指令 AngularJS 实例 使用 AngularJS 设置添加链接: 定义和用法 ng-href 指令覆盖了原生的 <a> 元素 href 属性。 如果在 href 的值中有 AngularJS 代码