ngStyle AngularJs放置变量属性

时间:2015-04-08 10:28:14

标签: javascript css angularjs uikit progress-bar

我需要使用uikit创建一个进度条。据uikit说,这是它的工作原理:

<div class="uk-progress">
    <div class="uk-progress-bar" style="width: 40%;">40%</div>
</div>

当然这是一种静态方法。所以我创建了一个计算角度百分比的函数:

getPercentage: function() {
                var self = this;
                var done = this.downloadStatus.done.replace(/,/g, "");
                var total = this.downloadStatus.total.replace(/,/g, "");
                self.percentage = 0;
                if (parseInt(total) != 0) {
                    self.percentage = (parseInt(done) / parseInt(total)) * 100;
                }
                return self.percentage;
            } 

条形图的“样式”决定了它在html中的宽度..是否可以使用ng-style of angular来获得动态宽度?我尝试过:

<div class="uk-progress">
        <div class="uk-progress-bar" ng-style="{{getPercentage()}}">40%</div>
    </div>

但不起作用。感谢

3 个答案:

答案 0 :(得分:0)

<div class="uk-progress-bar" ng-style="getPercentage()">40%</div>

ngStyle应该是动态的,它的属性是一个表达式(你可能需要将它放入单引号中以使其成为静态字符串)。否则将使用样式。

答案 1 :(得分:0)

ngStyle不需要{{}}

你可以尝试一下:

angular.module('app', [])
  .controller('testController', function($scope) {
    $scope.test={color: "red"}
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>


<div ng-app="app">
  <div ng-controller="testController">
    
    <div ng-style="test">{{test}}</div>        
    <input type="text" ng-model="test.color"/>
    
  </div>
</div>

答案 2 :(得分:0)

如何在范围

上保存动态样式
$scope.progressBarWidth = getPercentage();

并根据下载进度或触发进度条移动的任何内容进行更新,并将其包围在$asyncEval

$scope.$evalAsync(function() {
   $scope.progressBarWidth = getPercentage();
});

这样它会更新进度条。 您的HTML将如此

<div class="uk-progress-bar" ng-style="progressBarWidth">40%</div>