我已经阅读了一点,并开始了我最终想要的东西。 This很有帮助,还有另一篇文章,我忘记了链接。但是,我读过的所有内容 ADDS 是一个元素的CSS类或属性。我想更改现有CSS类的属性,但我不知道如何定位它。
我想我想在Angular文档中使用的其中一个用例中使用ng-class
:
我现有的代码使用ng-class
和一些控制器逻辑。
HTML
<div ng-controller="ngToggle">
<div ng-class="{'inset-gray-border' : style}">
<div class="subcontainer" ng-click="toggleStyle()">{{item.name}}</div>
</div>
</div>
这会将inset-gray-border
类添加到嵌套的div
,但我只想更改subcontainer
类中的border属性。
控制器
angular.module('app').controller('ngToggle', ['$scope', function($scope) {
$scope.style = false;
$scope.toggleStyle = function() {
$scope.style = $scope.style === false ? true: false;
};
}]);
我考虑过使用指令,但我认为这样会有点过分。我认为这可以在控制器中实现。
编辑:经过进一步的研究,我认为jQLite可以解决这个问题,但这可能需要一个指令。
答案 0 :(得分:2)
您可以只在UI端编写这些东西,而不是大的toggleStyle函数。
Here是小提琴。如果要更改.subcontainer
的边框属性,请通过添加.insert-gray-border
<div ng-controller="ngToggle">
<div >
<div ng-class="{'subcontainer':true,'inset-gray-border' : style}" ng-click="style=!style">{{item.name}}</div>
</div>
</div>
这样做的好处是,它使用局部范围而不是控制器范围。
答案 1 :(得分:2)
更改现有CSS类的属性
使用您使用ng-class添加的新类添加一个css规则。特异性将超过原始规则
.subcontainer{
color : blue
}
.inset-gray-border .subcontainer{
color:red
}
答案 2 :(得分:0)
最好的办法是定义两个CSS类,一个用于基础(未加镜像),另一个用于切换属性时所需的所有属性。
在这种情况下,您可能需要以下内容:
.container .subcontainer {}
.container .subcontainer-bordered { border: solid 1px #123456}
然后更新您的HTML代码以反映此结构
<div ng-controller="ngToggle">
<div class="container">
<div class="subcontainer" ng-class="{'subcontainer-bordered': style}" ng-click="style = !style">{{item.name}}</div>
</div>
</div>