angularjs - ngClass 变量改变但类保持不变
问题描述
我有以下->
<li ng-repeat="statusBox in $ctrl.statusListForDisp"
ng-class="[{'active': statusBox.isActive}, 'label-status-{{statusBox.color}}']"
layout="column" layout-align="center start">
当我第一次加载该项目时它工作得很好,
但是,如果我编辑对象,ngClass 是更新的,但不是类本身 ->
我的 ngClass 语法错了吗?
解决方案
问题在于对 CSS 类名使用插值语法。
当模板中的这个 CSS 类名发生变化时,AngularJS 不会认为它改变了传递给 的值ng-class
,这就是为什么什么都没有发生的原因。
下面我做了一个最小的例子来展示你看到的行为和你可能想要的替代方法。
请注意,在替代方案中,CSS 类名是使用字符串连接创建的。
angular
.module('app', [])
.controller('ctrl', function () {
this.statusListForDisp = [
{ color: 'red' },
];
this.makeGreen = function (statusBox) {
statusBox.color = 'green';
};
});
.label-status-green { color: green; }
.label-status-red { color: red; }
<script src="https://unpkg.com/angular@1.7.8/angular.min.js"></script>
<div
ng-app="app"
ng-controller="ctrl as $ctrl">
<ul>
<li
ng-repeat="statusBox in $ctrl.statusListForDisp"
ng-class="['label-status-{{statusBox.color}}']"
ng-click="$ctrl.makeGreen(statusBox)">click me: {{ statusBox.color }}</li>
</ul>
<ul>
<li
ng-repeat="statusBox in $ctrl.statusListForDisp"
ng-class="['label-status-' + statusBox.color]"
ng-click="$ctrl.makeGreen(statusBox)">click me: {{ statusBox.color }}</li>
</ul>
</div>
推荐阅读
- delphi - 在对象检查器集合编辑器中检测所选项目
- google-analytics - 为什么按月的 %new session 与按该月每天的平均 %new session 不同
- django - 使用 docker-compose 中的命令导出后,bash 中没有环境变量
- django - 如何在 Django 管理表单中添加自定义操作按钮并发布信息
- html - 如何在我的网站上响应地调整 power bi 视觉效果
- netezza - 带有管道分隔文件的 Netezza 合并表
- mysql - Mysql分区对DDL和DML的影响
- list - 如何回答每行包含多个答案的交互式提示
- react-native - 使用 CodePush 的 Sentry React-Native 不使用源映射
- airflow - 气流,在当前 dag 运行中获取任务的当前状态