javascript - 无法从指令中选择 ngClass 元素

标签 javascript angularjs directive ng-class

我使用 angularjs ng-class directive 使用 ng-if 添加类,并且我使用另一个module 指令用这个类名对这个元素做一些事情,但在运行时它不起作用指令无法找到具有这个类名的元素,当我硬编码它的类名时,它的工作,但从 ng-class 注入(inject)的类名不起作用。

<!-- 'A' not picking by directive -->
<div ng-class="{'myclass': item.isTrue}" ng-repeat="item in vm.list">...</div>

<-- 'B' working -->
<div class="myclass" ng-repeat="item in vm.list">...</div>

指令。

var tmp = $element[0].getElementsByClassName("myclass"); // not working with 'A' but fine  with 'B'

最佳答案

我猜 directive 调用的 ng-class 有问题。此外,class 类型的指令使用较少,因为总是可以实现与 attributeelement 相同的效果。

我创建了一个demo ,如何使用 ng-if 调用 attribute 类型和 classdirective 来实现相同的效果:

  1. Using it as Attribute
<div ng-repeat="item in data">
    <div>
      {{item.name}}
      <span ng-if="item.isTrue" myclass></span>
    </div>
</div>
  1. Using it as Class
<div ng-repeat="item in data">
    <div>
      {{item.name}}
      <span ng-if="item.isTrue" class="myclass">
      </span>
    </div>
</div>    

两者的 JS 共同点如下:

$scope.data = [{
    'id': 0,
    'name': 'Name 1',
    'isTrue': false
  }, {
    'id': 1,
    'name': 'Name 2',
    'isTrue': true
  }, {
    'id': 2,
    'name': 'Name 3',
    'isTrue': true
  }, {
    'id': 3,
    'name': 'Name 4',
    'isTrue': false
}];    

关于javascript - 无法从指令中选择 ngClass 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38760233/

相关文章:

javascript - 如果 $scope 模型发生变化,但长度保持不变,为什么 Angular-UI 日历不更新?

javascript - 如何在 AngularJS 中处理来自 REST Api 的日期字段?

javascript - 如何从 Spark 获取数据并使用 Angular 显示

javascript - Angular 指令将模板分配给 Body,但保持相同的范围/ Controller

javascript - 如何在进入或退出全屏时触发 jQuery 事件?

javascript - Angularjs ng-repeat md-focus 最后一个元素?

javascript - 通过 attrs.val 或 attrs.$set(attname, val) 访问属性

javascript - AngularJS 自定义指令显示 {{obj}} 但不显示 {{obj.prop}}?

javascript - 获取字体向量

javascript - 更改类以选中复选框 JavaScript