我正在try 使用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'}].

我如何正确地做到这一点?

EDIT

解决方案1:(过时)

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

EDIT 2

解决方案2:

我想将解决方案更新为Solution 3,由Stewie提供,应该是使用的解决方案.对于三元运算符来说,它是最标准的(对我来说也是最容易阅读的).解决办法是

<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相关问答推荐

jest使用useLocate测试自定义挂钩

setFinder关闭模式并重定向到url

IOS(React Native)中未找到模块SquareReaderSDK

JavaScript文本区域阻止KeyDown/KeyUp事件本身上的Alt GR +键组合

我应该在redux reducer中调用其他reducer函数吗?

node TS:JWT令牌签名以验证客户端和后台问题之间的身份验证

使用续集和下拉栏显示模型属性

使用i18next在React中不重新加载翻译动态数据的问题

如何使覆盖div与可水平滚动的父div相关?

Promise Chain中的第二个useState不更新

XSLT处理器未运行

Ember.js 5.4更新会话存储时如何更新组件变量

我可以使用空手道用户界面来获取网页的当前滚动位置吗?

在使用REACT更改了CSS类之后,无法更改CSS样式

JavaScript不重定向配置的PATH

在JS中动态创建对象,并将其追加到HTML表中

使用父标签中的Find函数查找元素

ngOnChanges仅在第二次调用时才触发

我不知道如何纠正这一点.

为什么NULL不能在构造函数的.Prototype中工作