【问题标题】:Why doesn't ng-class work with a class name?为什么 ng-class 不能使用类名?
【发布时间】:2016-11-25 23:46:53
【问题描述】:

我写了以下代码:

 <style>
    .dotted {
         border:dotted;
     }
 </style>

....

 <p ng-style = "mystyle"  ng-class="dotted "> {{ answer }} </p>

我的目的是

元素将被放置在虚线边框内。它不起作用。我查看了 Angular 文档 (https://docs.angularjs.org/api/ng/directive/ngClass),发现:

如果表达式的计算结果为字符串,则该字符串应为 1 或 更多以空格分隔的类名。

我了解 ng-class 可能包含我在 -tag 中定义的类名。所以..我做错了什么?

【问题讨论】:

  • 在这个例子中只使用类。 HTML 'class' 没有被弃用,Angular 添加到它,这是 Web 组件的概念。用法见我的回答。

标签: javascript css angularjs ng-class angularjs-ng-class


【解决方案1】:

ng-class 指令根据绑定到的 DOM 的 scope 评估其值,因此这里 dotted 使用范围进行评估,它没有价值。所以你必须将它提供为'dotted'(string)

ng-class="'dotted'"

在您的情况下,您应该直接使用class="dotted",因为您的类似乎是静态的。

【讨论】:

  • 谢谢。你如何从 Angular 文档中理解它?
  • @CrazySynthax 文档明确表示ng-class="expression" where 表达式可以是scope 绑定
  • 但 'dotted' 不是作用域绑定
  • @CrazySynthax 这就是为什么我有'dotted'(在ng-class 内用单个qoute 包裹),它将评估为dottedng-class 将评估值放入class 属性中跨度>
【解决方案2】:

ng-class 接受评估,因此它期望如下:

ng-class="{class: booleanVar}"

如果您的班级有连字符,请使用以下引号:

ng-class="{'my-class-name': someVar === someThing}"

或者这样的函数:

ng-class="{'my-class-name': someFuncReturningTruthyValue()}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-12
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多