从scope中的范围添加默认类和类?

时间:2014-01-15 13:46:58

标签: angularjs

我想在angular中添加两个类。一个始终是相同的,一个由范围检索。

我试过这个:

<label class="checkbox" ng-switch-when="checkbox" ng-class="{{field.name}}">
<input
    name="{{field.key}}"
    type="checkbox"
    value="Option 1"
    ng-model="$storage[field.key]"
>
    {{field.label}}
</label>

它在DOM中生成了两个类。

此:

<label ng-switch-when="checkbox" ng-class="{{field.name}} checkbox">
<input
    name="{{field.key}}"
    type="checkbox"
    value="Option 1"
    ng-model="$storage[field.key]"
>
    {{field.label}}
</label>

没有向class-attribute添加任何内容

2 个答案:

答案 0 :(得分:0)

我在这里为你准备了一个关于plunker的简单例子(http://plnkr.co/edit/H7JstMuvHSlwPSy3raPO?p=preview)。该示例的核心是:

<div ng-class="{red: showRed, bold: showBold}">Hello Plunker!</div>

要使此示例有效,您需要在控制器中定义两个布尔“showRed”和“showBold”。它非常简单,但控制器代码如下:

var app = angular.module("App", []);
app.controller("ctrl", function($scope){
  $scope.showRed = true;
  $scope.showBold = true;
});

当您将这些布尔值切换为true / false时,类将切换元素的开关。为了便于查看,我在示例中添加了两个按钮,以便您可以在不更改代码的情况下进行切换。希望这可以帮助你。祝你好运!

答案 1 :(得分:0)

ng-class需要一个表达式,其值为字符串,数组或映射。顺便说一句。您不需要{{,因为整个字符串已经是表达式。

无法评估您的第二个表达式。这就像JavaScript field.name checkbox中的一行 - 这不是有效的代码。 field.name + ' checkbox'会。你可以使用它。

如果你有更多动态类,数组肯定会更容易使用:

[field.name, someOtherVariable, 'checkbox']