AngularJS使用ng类切换类

AngularJS toggle class using ng-class

本文关键字:ng 使用 AngularJS      更新时间:2023-09-26

我正在尝试使用ng-class 切换元素的类

<button class="btn">
  <i ng-class="{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}"></i>
</button>

isAutoScroll((:

$scope.isAutoScroll = function()
{
    $scope.autoScroll = ($scope.autoScroll) ? false : true;
    return $scope.autoScroll;
}

基本上,如果$scope.autoScroll为真,我希望ng类为icon-autoscroll,如果为假,我希望它为icon-autoscroll-disabled

我现在没有工作,正在控制台中产生这个错误

Error: Lexer Error: Unexpected next character at columns 18-18 [?] in expression [{(isAutoScroll()) ? 'icon-autoscroll' : 'icon-autoscroll-disabled'}].

如何正确执行此操作?

编辑

解决方案1:(过时的(

<button class="btn" ng-click="autoScroll = !autoScroll">
  <i ng-class="{'icon-autoscroll': autoScroll, 'icon-autoscroll-disabled': !autoScroll}"></i>
</button>

编辑2

解决方案2:

我想更新解决方案,因为应该使用Stewie提供的Solution 3。当涉及到三元运算符时,它是最标准的(对我来说最容易阅读(。解决方案是

<button class="btn" ng-click="autoScroll = !autoScroll">
  <i ng-class="autoScroll ? 'icon-autoscroll' : 'icon-autoscroll-disabled'"></i>
</button>

翻译为:

if (autoScroll == true) ?//使用类'icon-autoscroll' ://否则使用'icon-autoscroll-disabled'

如何在ng类中使用条件:

解决方案1:

<i ng-class="{'icon-autoscroll': autoScroll, 'icon-autoscroll-disabled': !autoScroll}"></i>

解决方案2:

<i ng-class="{true: 'icon-autoscroll', false: 'icon-autoscroll-disabled'}[autoScroll]"></i>

解决方案3(angular v.1.1.4+引入了对三元运算符的支持(:

<i ng-class="autoScroll ? 'icon-autoscroll' : 'icon-autoscroll-disabled'"></i>

Plunker

作为替代解决方案,基于javascript逻辑运算符'&amp;'返回最后一次评估,您也可以这样做:

<i ng-class="autoScroll && 'icon-autoscroll' || !autoScroll && 'icon-autoscroll-disabled'"></i>

它的语法略短,但对我来说更容易阅读。

根据条件添加多个类:

<div ng-click="AbrirPopUp(s)" 
ng-class="{'class1 class2 class3':!isNew, 
           'class1 class4': isNew}">{{ isNew }}</div>

Apply:class1+class2+class3当isNew=false时,

isNew=true

时应用:class1+class4
<div data-ng-init="featureClass=false" 
     data-ng-click="featureClass=!featureClass" 
     data-ng-class="{'active': featureClass}">
    Click me to toggle my class!
</div>

类似于jQuery的toggleClass方法,这是一种在单击元素时打开/关闭active类的方法。

autoscroll将在控制器中定义和修改:

<span ng-class= "autoscroll?'class_if_true':'class_if_false'"></span>

根据条件添加多个类别:

<span ng-class= "autoscroll?'first second third':'classes_if_false'"></span>

我是这样做的:

<button class="btn" ng-click='toggleClass($event)'>button one</button>
<button class="btn" ng-click='toggleClass($event)'>button two</button>

在您的控制器中:

$scope.toggleClass = function (event) {
    $(event.target).toggleClass('active');
}