编辑:原来这是我这边的一个混乱,请看我自己的答案。
当我试图重新排序ng类中多个类的优先级时,我遇到了一种奇怪的行为。
ng-class="{'e':($index%2>0),'btn-primary':($index>3)}"http://jsfiddle.net/6JjFM/1/
问题是,无论您如何更改ng类中表达式的顺序,它似乎总是应用样式表中的最后一个类(即在css中,如果您将. below放在.e下面,那么它将开始使用.background的背景颜色)。如果我使用ng类-甚至放置.e类,也会发生同样的情况。如果你真的用铬检查代码,它会显示为“btn-主e”的顺序,但是.e的背景色并不覆盖btn-主的背景色。
是否有什么方法可以改变ng类中类的优先级,使用角,而不使用css技巧,例如!重要等等。
发布于 2014-05-29 08:31:46
您的问题实际上不是在ng-class上,因为我认为他的工作方式是他设计的。
解决方案1:
是的,使用CSS技巧。将以下样式添加到样式表中:
.e.btn-primary{
    background-color: #F5F5F5;
}现在它将使用e背景色。
解决方案2:
使用ng-style
<li 
    class="li" 
    ng-class="{'btn-primary':($index>3),'e':($index%2>0)}" 
    ng-repeat="row in rows"
    ng-style="$index%2>0 && {'backgroundColor': '#F5F5F5'}"
    >{{row}}</li>ng-style将向元素添加内联样式,并覆盖文件样式表。
发布于 2014-05-29 08:32:46
这是预期的行为。在ng类中,类的顺序并不重要。CSS关注的是特定性,如果是相同的,则应用出现第二的类。在您的示例中,.e和. both具有相同的特性,因此在css中后面出现的类将覆盖前面的类(如果它们都更改相同的属性)。
请参阅这里的一个示例,说明如何更改专用性以确保首先出现的类得到应用.
我增加了div,提高了btn的特异性。因此,div的背景以蓝色出现。
index.html:
<html lang="en" ng-app="app">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    div.btn-primary {background-color: blue;}
    .e {background-color: red;}
    </style>
</head>
<body >
    <script src= "angular.js"></script>
    <script src= "script.js"></script>
    <div ng-controller='TeamController'>
    <div ng-class="{'e':value%2>0, 'btn-primary':value>3}">
        hello world
    </div>
    </div>
</body>
</html>script.js:
var app = angular.module('app', [])
app.controller('TeamController', function($scope) {
  $scope.value = 7;
});发布于 2014-05-29 09:24:41
所有的答案都是完全正确的,我为此感谢你!
我的困惑来自于长期使用jquery和动态地向元素中添加事件类。
$('#el').click(function(){
        $('#el').addClass("two")
    });http://jsfiddle.net/4Gtk6/
在我写下问题的那一刻,我意识到的是,在这种情况下,每当页面发生变化时(基于某些事件的范围内)都会重新呈现页面,并符合样式表的顺序和每个类的特殊性。再次感谢!
https://stackoverflow.com/questions/23928727
复制相似问题