您可以使用ng-style
AngularJS 动态更改 CSS 类属性。
请参阅下面的代码或此 plunk ( http://plnkr.co/edit/n4NlIfgfXIiNHWu5oTzS?p=preview )
我创建了一组颜色供 the 使用ng-repeat
并动态更改background-color
每个项目的 。
请注意,尽管所有项目都有一个名为original
红色背景的类,但该值会使用数组中的新颜色进行更新(覆盖)。
所以现在你可能在想:“太棒了!如果我可以动态更改类颜色属性,我应该能够对任何其他属性做同样的事情,比如content
对吗?!? ”
答案是“是与否”。
似乎伪选择器喜欢:after
并且:before
被区别对待。
“虽然它们由浏览器通过 CSS 呈现,就好像它们就像其他真实的 DOM 元素一样,但伪元素本身并不是 DOM 的一部分,因此你不能直接使用 AngularJS、jQuery(或任何 JavaScript API)来选择和操作它们对于这个问题”
您可以在这篇文章中找到完整的解释:(https://stackoverflow.com/a/5041526/1310945)
已经说过,我相信您可以使用此解决方案(https://stackoverflow.com/a/16507264/1310945)设法解决这个问题。
我还没有尝试过 - 但我可能会再做一次只是为了好玩。
附带说明一下,对于您尝试使用ng-class
.
无论如何,希望这至少能让你朝着正确的方向前进。:)
<!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>