Change bootstrap progress-bar width from angularjs

后端 未结 5 1606
臣服心动
臣服心动 2020-12-09 04:20

I\'m new in Angularjs and I am trying to update the width of a progress bar when a value in my controller change.

I have something like:



        
相关标签:
5条回答
  • 2020-12-09 04:56

    I would use a directive for this, that is responsible for calculating the width by itself.

    module.directive("progressbar", function () {
        return {
            restrict: "A",
            scope: {
                total: "=",
                current: "="
            },
            link: function (scope, element) {
    
                scope.$watch("current", function (value) {
                    element.css("width", scope.current / scope.total * 100 + "%");
                });
                scope.$watch("total", function (value) {
                    element.css("width", scope.current / scope.total * 100 + "%");
                })
            }
        };
    });
    

    http://jsfiddle.net/rGWUR/10/

    0 讨论(0)
  • 2020-12-09 04:58

    ng-style directive would do the trick.

    <span id="percentage">$ {{getTotal()}} ({{getPercentage()}}%)</span>
    <div class="progress-bar progress-bar-warning" 
      role="progressbar" aria-valuenow="{{getPercentage()}}" aria-valuemin="0" 
      aria-valuemax="100" ng-style="{width : ( getPercentage() + '%' ) }">
        <span class="sr-only">{{getPercentage()}}% Complete (warning)</span>
    </div>
    
    0 讨论(0)
  • 2020-12-09 05:08

    Well, you should do something like this:

    <div class="progress-bar progress-bar-warning" 
      role="progressbar" aria-valuenow="{{getPercentage()}}" aria-valuemin="0" 
      aria-valuemax="100" style="width: {{getPercentage()}} %">
        <span class="sr-only">{{getPercentage()}}% Complete (warning)</span>
    </div>
    
    0 讨论(0)
  • 2020-12-09 05:18

    You can write custom ng-style:

     <div class="progress-bar progress-bar-warning"
        role="progressbar" 
        aria-valuenow="10"
        aria-valuemin="0"
        aria-valuemax="100" 
        ng-style="percentageStyle">
            <span class="sr-only">10% Complete (warning)</span>
     </div>
    

    and in controller:

     $scope.percentageStyle = {
       width : $scope.getPercentage() + '%'     
     };
    

    Demo Fiddle

    0 讨论(0)
  • 2020-12-09 05:20

    I think que the better solution is to use Angle -UI progress bar instead trying to reinvent the wheel https://angular-ui.github.io/bootstrap/#/progressbar.

    <uib-progressbar value="50"></uib-progressbar>
    
    0 讨论(0)
提交回复
热议问题