您可以使用 ng-style 使用 AngularJS 动态更改 CSS 类属性。
查看下面的代码或这个 plunk (http://plnkr.co/edit/n4NlIfgfXIiNHWu5oTzS?p=preview)
我创建了一组颜色供ng-repeat 使用,并动态更改每个项目的background-color。
请注意,尽管所有项目都有一个名为 original 的类,其背景为红色,但该值会使用数组中的新颜色进行更新(覆盖)。
所以现在你可能在想:“酷!如果我可以动态更改类颜色属性,我应该能够对任何其他属性执行相同操作,例如 content 对吗?!?"
答案是“Yes & No”。
似乎:after 和:before 等伪选择器的处理方式不同。
“虽然它们是由浏览器通过 CSS 呈现的,就好像它们是
像其他真实的 DOM 元素一样,伪元素本身不是一部分
DOM,因此您不能直接选择和操作它们
使用 AngularJS、jQuery(或任何与此相关的 JavaScript API)
你可以在这篇文章中找到完整的解释:(https://stackoverflow.com/a/5041526/1310945)
话虽如此,我相信您可以使用此解决方案 (https://stackoverflow.com/a/16507264/1310945) 解决此问题。
我还没有尝试过 - 但我可能会再做一次,只是为了好玩。
附带说明,对于您尝试使用 ng-class 执行的操作,也许有更好的解决方案(以及更多 AngularJs 风格的方法)。
无论如何,希望这至少能让你朝着正确的方向前进。 :)
<!doctype html>
<html lang="en" ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootswatch/3.0.0/united/bootstrap.min.css">
<style>
ul {
list-style-type: none;
color: #fff;
}
li {
padding: 10px;
text-align: center;
}
.original {
background-color: red;
}
</style>
<script>
var myApp = angular.module('myApp', []);
myApp.controller("myAppCtrl", ["$scope", function($scope) {
$scope.colors = ['#C1D786', '#BF3978', '#15A0C6', '#9A2BC3'];
$scope.style = function(value) {
return { "background-color": value };
}
}]);
</script>
</head>
<body>
<div ng-controller="myAppCtrl">
<div class="container">
<div class="row">
<div class="span12">
<ul>
<li ng-repeat="color in colors">
<h4 class="original" ng-style="style(color)"> {{ color }}</h5>
</li>
</ul>
</div>
</div>
</div>
</div>
</body>
</html>