ngClass样式,带破折号


165

我希望这可以使某些使用破折号的样式的人免于头痛,尤其是因为引导程序变得如此流行。

我通过以下方式使用角度1.0.5

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.js"></script>

ngClass文档中,该示例很简单,但还提到该表达式可以是类名到布尔值的映射。我试图在我的图标上使用“ icon-white”样式,如引导文档中所示,具体取决于布尔变量。

<i class="icon-home" ng-class="{icon-white: someBooleanValue}">

上面的行不起作用。icon-whitesomeBooleanValuetrue为true 时,该类不附加。但是,如果将键更改为iconWhite,则会成功将其添加到类值列表中。如何用破折号添加一个值?


1
嗨,欢迎来到SO!您应该更新您的问题以将其分为一个问题和一个答案-回答您自己的问题是可以的,如果有帮助,请鼓励。这样,您就可以接受答案,其他人可以看到该问题的答案是成功的。
Alex Osborn

感谢您的建议!
Foo L

Answers:


364

经过数小时的黑客攻击,事实证明破折号被插值了!引号是必需的。

<i class="icon-home" ng-class="{'icon-white': someBooleanValue}">

我希望这可以帮助某人避免头发脱落。

更新:

在较旧的Angular版本中,使用反斜杠也可以解决问题,但在较新的版本中则不行。

<i class="icon-home" ng-class="{icon\-white: someBooleanValue}">

前者可能是首选,因为您可以在自己喜欢的编辑器中更轻松地搜索它。


15
这次真是万分感谢。我在这上面也浪费了太多时间。
taudep 2013年

2
谢谢!!!我知道这种情况正在发生,但不确定如何解决。谢谢!
马克·福特

1
我使用AngularJS 1.2.3。“ \-”对我不起作用。“”的效果很好。
bobzsj87

1
想知道为什么当我似乎在跟随其他示例时,这对我不起作用!
nevster

$ scope.someBooleanValue = true
zloctb

11

\'icon-white\' 也可以正常工作(使用AngularJS 1.2.7)


这是最好的答案,因为它是对未来最友好且向后兼容的
Eric Steinborn 2014年

2
嗨!@EricSteinborn我来自未来,我来这里是为了警告您:这一点都不友好!
Typo

0

替代使用ng-class:

    .menu-disabled-true{
color: red;
}
    .menu-disabled-false{
color: green;
}


<div ng-controller="DeathrayMenuController">
<p class=menu-disabled-{{status}}>shanam</p>
 <button ng-click="action()">click me</button>
</div>

<script>



function DeathrayMenuController($scope) {
    $scope.status=true
    $scope.action= function(){
      $scope.status=!$scope.status
    }
}
</script>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.