【问题标题】:ngStyle AngularJs put variable attributengStyle AngularJs 放置变量属性
【发布时间】:2015-04-08 10:28:13
【问题描述】:

我需要使用 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 的角度来获得动态宽度?我试过了:

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

但不起作用。谢谢

【问题讨论】:

    标签: javascript css angularjs uikit progress-bar


    【解决方案1】:
    <div class="uk-progress-bar" ng-style="getPercentage()">40%</div>
    

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

    【讨论】:

      【解决方案2】:

      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>

      【讨论】:

        【解决方案3】:

        如何将动态样式保存在示波器上

        $scope.progressBarWidth = getPercentage();
        

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

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

        这样它会更新进度条。 您的 HTML 将如下所示

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

        【讨论】:

        • 这样我有:$scope.$asyncEval 不是一个函数.. 很多 javascript 错误
        • 对不起,试试$scope.$evalAsync 我总是把那个混在一起
        • 不起作用..这就是我现在所做的并且似乎有效:
          .. 第一次工作,但如果我再次执行相同的操作,进度条会从 100% 开始并返回到 60%(例如)......这很奇怪
        • 嗯,有线的,如果你愿意,你可以将你的代码粘贴到jsfiddle.net,我可以看看
        猜你喜欢
        相关资源
        最近更新 更多
        热门标签