ngClass style with dash in key ngClass指令中的key带有破折号

22 浏览
0 Comments

ngClass style with dash in key ngClass指令中的key带有破折号

希望这能帮助某人避免因使用带有连字符的样式而产生头疼,尤其是由于Bootstrap变得如此受欢迎。

我正在使用Angular 1.0.5,引用方式如下:


ngClass文档中,示例很简单,但它也提到表达式可以是一个将类名映射为布尔值的映射。我试图根据一个布尔变量在我的图标上使用"icon-white"样式,就像Bootstrap文档中所示。


上面的代码行不起作用。当someBooleanValue为true时,类没有附加icon-white。然而,如果我将键更改为iconWhite,它会成功添加到类值列表中。如何添加一个带有连字符的值?

0
0 Comments

在AngularJS 1.2.7中,使用\'icon-white\'可以正常工作。这是最佳答案,因为它是最具未来友好性和向后兼容性的解决方法。然而,从未来的角度来看,这并不友好。

问题的原因是在使用ngClass指令时,如果要给样式中的属性添加破折号,会导致问题。AngularJS的ngClass指令用于根据条件动态添加或删除CSS类。在这个问题中,ngClass指令被用来添加一个带有破折号的属性。

解决这个问题的方法是使用对象字面量的方式,将带有破折号的属性作为键,将属性值作为值。这样可以避免直接在ngClass指令中使用带有破折号的属性。

以下是解决方法的示例代码:

<div ng-class="{'icon-white': true}">
    ...
</div>

通过这种方式,我们可以在ngClass指令中使用带有破折号的属性,同时保持代码的可读性和可维护性。这种方法更加未来友好,并且向后兼容。

0
0 Comments

ngClass style with dash in key问题的出现原因是在ng-class中使用了带有连字符的key。在上述代码中,ng-class的key是"menu-disabled-{{status}}",而且在样式表中也定义了两个class,分别是"menu-disabled-true"和"menu-disabled-false"。然而,由于ng-class的key中带有连字符,浏览器会将连字符解释为减号,导致class无法正确应用。

解决这个问题的方法是将ng-class的key中的连字符替换为驼峰式命名法。在上述代码中,可以将"menu-disabled-{{status}}"修改为"menuDisabled{{status}}",然后在样式表中对应地修改class的名称为"menuDisabledTrue"和"menuDisabledFalse"。这样修改后,ng-class就能正确应用class了。

修正后的代码如下所示:

    .menuDisabledTrue{
        color: red;
    }
    .menuDisabledFalse{
        color: green;
    }
<div ng-controller="DeathrayMenuController">
<p ng-class="{'menuDisabled' + 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>

0
0 Comments

问题的原因是在使用ngClass指令时,当key中包含连字符(dash)时,会出现插值(interpolation)的情况。解决方法是在key的外部添加引号。在旧版本的Angular中,可以使用反斜杠来避免插值问题,但在新版本中不再适用。

以下是一种解决方法:


这种方法更为常用,因为在你喜欢的编辑器中更容易进行搜索。

感谢这个解决方法。我在这个问题上浪费了太多的时间。

非常感谢!我知道这个问题存在,但不确定如何解决。谢谢!

我使用的是AngularJS 1.2.3版本。反斜杠对我无效。添加空引号('')非常好用。

当我按照其他示例操作时,我想知道为什么这个方法对我不起作用!

$scope.someBooleanValue = true

0