ngClass 不工作?

Posted

技术标签:

【中文标题】ngClass 不工作?【英文标题】:ngClass not working? 【发布时间】:2015-03-14 04:30:20 【问题描述】:

我是 AngularJS 的新手,我知道 ngClass 指令可用于将类动态插入到元素中,例如:

<input ng-class="some-class: condition, another-class: anotherCondition">

Angular 会自动评估哪些条件为真,并将这些特定的类插入元素中。

现在我正在尝试做类似的事情:

<div class="form-group" ng-class="has-success: form.email.$valid">

由于我有引导程序,如果电子邮件有效,它将自动将标签和输入着色为绿色。但它不起作用,我在控制台中收到这个特殊错误:

Error: [$parse:syntax] http://errors.angularjs.org/1.2.27/$parse/syntax?p0=-&p1=is%20unexpected%2C%20expecting%20%5B%3A%5D&p2=5&p3=%7Bhas-success%3A%20form.email.%24valid%7D&p4=-success%3A%20form.email.%24valid%7D
z/<@http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js:6:450

等等……

我做错了什么?是语法问题吗?

【问题讨论】:

【参考方案1】:

你的班级名称中有一个破折号,所以请使用单引号!

ng-class="'has-success': form.email.$valid"

【讨论】:

多么好的时机.. 我们的答案是同时发布的.. 17-21-21,你比我早几毫秒.. :D @PSL - 哈......我知道你总是在这些 Angular 问题上,得快点! 这正是我的想法。现在我接受哪个?再加上投票之战也在附近。 等等,为什么不能反过来呢?我的意思是,ng-class='"has-success": form.email.$valid'【参考方案2】:

这显然是一个解析器错误,由于属性名称@has-success: form.email.$valid 中存在-,您的语法无效。您需要将它们用引号括起来。

试试:-

<div class="form-group" ng-class="'has-success': form.email.$valid">

【讨论】:

【参考方案3】:

如果你在类名中使用“-”,你应该用单引号覆盖类名。

[ngClass] = "'some-class': condition"

否则可以使用

[ngClass] = "someClass : condition"

【讨论】:

【参考方案4】:

这对我有用

[ngClass] = " 'color-red': isRed"

【讨论】:

【参考方案5】:

虽然@tymeJV 提到了这个问题的迟到和实际原因,但在某些情况下,如果清除了浏览器选项卡的缓存,ngClassngStyle 和相关指令将起作用。 Clear Cache and Hard reload 或在新选项卡中打开都可以,如果您认为指令定义正确。

【讨论】:

以上是关于ngClass 不工作?的主要内容,如果未能解决你的问题,请参考以下文章

ngFor 在行和列问题上使用 ngClass

angular 中的[ngClass][ngStyle]

我可以在条件 [ngCLASS] 下编写 CSS 类吗

Angular 4 - 在 jquery append 中编译 [ngClass]

`ngClass` 指令将类应用为 `object` 而不是 `class` 值

Angular 2 ngClass 以数据为条件?