2017-01-16 21 views
0

我有以下代码的伟大工程:在HTML设置角变量,同时使用NG-重复

<div class="progress progress-striped active"> 

     <div class="progress-bar progress-bar-success" style="width: {{(p.availableIpAddressCount/p.totalIpAddressCount)*100|number:0}}%;background-color: #5cb85c"> 
     {{(p.availableIpAddressCount/p.totalIpAddressCount)*100|number:0}} 
     </div> 
    </div> 

然而,正如你所看到的,我是在重复{{(p.availableIpAddressCount/p.totalIpAddressCount)*100|number:0}}了很多,所以我想将其分配到角度变量。我还想对结果进行NG切换。这是我已经尝试过

<div class="progress progress-striped active" ng-init = "barPercentage= {{(p.availableIpAddressCount/p.totalIpAddressCount)*100|number:0}}"> 
<div ng-switch="barPercentage"> 
    <div ng-switch-when=">=0" class="progress-bar progress-bar-success" style="width: {{barPercentage}}%;background-color: #5cb85c"> 
    {{(p.availableIpAddressCount/p.totalIpAddressCount)*100|number:0}} 
    </div> 
</div> 
</div> 

但是,这根本不起作用,但我不确定为什么。我在控制台中没有错误。

任何想法?

+0

怎么样只是用NG-如果 – MMK

+0

你不需要插即'NG-的init =“barPercentage =(p.availableIpAddressCount/p.totalIpAddressCount)* 100 |编号:0 “' – Satpal

+0

@Satpal如果没有内插,它仍然不起作用。感谢您的建议。 –

回答

1

var app = angular.module('demo', []); 
 
app.controller('DemoCtrl', DemoCtrl); 
 
DemoCtrl.$inject = ['$scope']; 
 

 
function DemoCtrl($scope) { 
 
    // you can change this as you like. its just for demo purposes. 
 
    $scope.p = { 
 
    "availableIpAddressCount": 100, 
 
    "totalIpAddressCount": 70 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script data-require="[email protected]*" data-semver="1.2.5" src="https://cdn.rawgit.com/angular-ui/bootstrap/gh-pages/ui-bootstrap-tpls-1.2.5.js"></script> 
 
<script data-require="[email protected]" data-semver="2.2.0" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> 
 
<link data-require="[email protected]" data-semver="3.3.2" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" /> 
 
<script data-require="[email protected]" data-semver="3.3.2" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script> 
 
<script data-require="[email protected]" data-semver="1.3.2" src="https://cdn.rawgit.com/angular-ui/bootstrap/gh-pages/ui-bootstrap-tpls-1.3.2.js"></script> 
 

 
<div ng-app="demo" ng-controller="DemoCtrl"> 
 
<!--using ng-if --> 
 
    <div class="progress progress-striped active" ng-init="barPercentage= (p.availableIpAddressCount/p.totalIpAddressCount*100) | number:0"> 
 
    <div ng-if="barPercentage>=0" class="progress-bar progress-bar-success" style="width: {{barPercentage | number: 0}}%;background-color: #5cb85c"> 
 
    {{barPercentage |number:0}} 
 

 
    </div> 
 
</div> 
 

 
<!-- using ng-switch --> 
 
    <div class="progress progress-striped active" ng-init="barPercentage= (p.availableIpAddressCount/p.totalIpAddressCount*100) | number:0"> 
 
    <div ng-switch on="(barPercentage>=0)"> 
 
    <div ng-switch-when="true"> 
 
    <div class="progress-bar progress-bar-success" style="width: {{barPercentage | number: 0}}%;background-color: #5cb85c"> 
 
    {{barPercentage |number:0}} 
 
    </div> 
 
    </div> 
 
    <div ng-switch-default> 
 
     <!-- code to render the regular block --> 
 
    </div> 
 
    </div> 
 
</div> 
 
</div>

+0

这工作完美..感谢你:) –

+0

@MattBoyle太棒了。 – MMK

0

我强烈建议您在控制器中创建一个变量并将其暴露给范围。

$scope.barPercentage = (p.availableIpAddressCount/p.totalIpAddressCount)*100 ; 

做你的HTML的方式是有效ng-init,但它是highly unrecommended in the docs

请注意,没有AngularJS变量,而是暴露给您的模板的名为$scope的JavaScript对象。