代码之家  ›  专栏  ›  技术社区  ›  Learning-Overthinker-Confused

如何用角度js有条件地设置特定的类属性?

  •  2
  • Learning-Overthinker-Confused  · 技术社区  · 8 年前

    我有一个div,我想在其中有条件地设置这个类的背景色属性。我正在使用 boostrap progress bar 我只想使用下面的类,因为它包含一些进度条的自定义设置。

    下面是我的div:

    .statistics .progress-bar {
        background-color: black;
        border-radius: 10px;
        line-height: 20px;
        text-align: center;
        transition: width 0.6s ease 0s;
        width: 0;
    }
    
    
    
    
     <div class="statistics" ng-repeat="item in data">
        <div class="progress-bar" role="progressbar" aria-valuenow="70"
                                        aria-valuemin="0" aria-valuemax="100" ng-style="{'width' : ( item.statistics + '%' )}">
         </div>
      </div>
    

    情况如下:

    If statistics > 100
        backgroundcolor=red;
    else 
        backgroundcolor=black;
    
    3 回复  |  直到 6 年前
        1
  •  3
  •   Raman Sahasi    8 年前

    可以使用简单的表达式

    ng-style="<condition> ? { <true-value> } : { <false-value> }"
    

    Updated Output

    代码:

    <!DOCTYPE html>
        <html ng-app="myApp">
    
        <head>
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
        </head>
    
        <body ng-controller="myCtrl">
    
            <div ng-style="item.statistics > 100 ? { 'background-color':'red', 'width': item.statistics + '%' }: { 'background-color':'yellow', 'width': item.statistics + '%'}">
                <h2>$scope.statistics = {{statistics}}</h2>
            </div>
    
            <div ng-style="item.statistics2 > 100 ? { 'background-color':'red', 'width': item.statistics2 + '%' } : { 'background-color':'yellow', 'width': item.statistics2 + '%'}">
                <h2>$scope.statistics2 = {{statistics2}}</h2>
            </div>
    
            <script>
                var myApp = angular.module("myApp", []);
    
                myApp.controller("myCtrl", ['$scope', function($scope) {
                    $scope.item = {};
                    $scope.item.statistics = 30;
                    $scope.item.statistics2 = 101;
                }]);
            </script>
        </body>
    
        </html>
        2
  •  1
  •   Olivier Boissé    8 年前

    可以使用ng类动态设置css类

    .statistics .progress-bar {
       background-color: black;
       border-radius: 10px;
       line-height: 20px;
       text-align: center;
       transition: width 0.6s ease 0s;
       width: 0;
       color: black
    }
    
    .red {
       color: red
    }
    
    <div class="progress-bar" role="progressbar" 
         aria-valuenow="70"
         aria-valuemin="0" aria-valuemax="100" 
         ng-style="{'width' : ( item.statistics + '%' )}"
         ng-class="{ red: item.statistics > 100 }"
    >
    

    如果不想创建额外的类,可以使用ng样式:

    <div class="progress-bar" role="progressbar" 
        aria-valuenow="70"
        aria-valuemin="0" aria-valuemax="100" 
        ng-style="getItemStyle(item)">
    

    然后,在控制器中,您必须创建getItemStyle函数:

     $scope.getItemStyle = function(item) {
         // determine the color
         var itemColor = item.statistics > 100 ? 'red' : 'black';
         // return object containing the css props
         return {
            'width': item.statistics + '%',
            'color': itemColor
         };
     };
    
        3
  •  0
  •   Drag13    8 年前

    你可以使用 ng-style 长宁背景房地产 或 ng-class 用于类操作。

    不要忘记使用这样的对象符号

    data-ng-class = {'test-class': condition}