ng-class不按预期覆盖类

jgr*_*ois 7 javascript angularjs

我有一个"开"或"关"的图标列表,具体取决于$ scope中的布尔值.我创建了两个CSS类 - clrOn和clrOff - 它们只是不同的颜色.我正在使用class =""分配所有图标clrOff,然后尝试使用ng-class =""覆盖它,如果布尔值为true.

根据我的研究,这是我应该工作的. plunker

CSS文件:

.clrOn { color: #333333; }
.clrOff { color: #DDDDDD; }
Run Code Online (Sandbox Code Playgroud)

JS文件:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.attachments = 1;
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<body ng-controller="MainCtrl">
    <span class="clrOff" 
          tooltip="Attachments" 
          ng-class="{ 'clrOn' : app.attachments }">
          TEST
    </span>
  </body>
Run Code Online (Sandbox Code Playgroud)

iva*_*rni 6

首先,ng-class="{ 'clrOn' : app.attachments }"不是拾取附件变量,因为它直接在作用域上声明,而不是在scope.app上声明,因此将其更改为ng-class="{ 'clrOn' : attachments }".

其次,ng-class不会覆盖任何现有class属性,而是添加它们,这样你的跨度就会留下两个类都应用于它.如果您不想同时分配两个类,则需要使用它们来声明它们ng-class.

  • 或者如果路上有更多的课程,`ng-class ="{clrOn:attachments,clrOff:!attachments}"` (3认同)