我正在尝试使用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-class为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'
答案 0 :(得分:428)
如何在ng-class中使用条件:
解决方案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(角度v.1.1.4 +引入了对三元运算符的支持):
<i ng-class="autoScroll ? 'icon-autoscroll' : 'icon-autoscroll-disabled'"></i>
答案 1 :(得分:13)
作为替代解决方案,基于javascript逻辑运算符'&amp;&amp;'返回最后一次评估,你也可以这样做:
<i ng-class="autoScroll && 'icon-autoscroll' || !autoScroll && 'icon-autoscroll-disabled'"></i>
它只是略短的语法,但对我来说更容易阅读。
答案 2 :(得分:10)
根据条件添加多个类:
<div ng-click="AbrirPopUp(s)"
ng-class="{'class1 class2 class3':!isNew,
'class1 class4': isNew}">{{ isNew }}</div>
当 isNew = false 时,应用:class1 + class2 + class3,
当 isNew = true
时,应用:class1 + class4答案 3 :(得分:6)
<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
类的方法。
答案 4 :(得分:1)
自动滚动将在控制器中定义和修改。
scheme_id
根据条件通过以下方式添加多个类:
<span ng-class= "autoscroll?'class_if_true':'class_if_false'"></span>
答案 5 :(得分:-1)
我以这种方式完成了这项工作:
<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');
}