2017-01-16 9 views
0

Я следующий код, который отлично работает:Установка угловой переменной в HTML в то время как с помощью нг-повтора

<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

насчет только с помощью нг-если – MMK

+0

Вам не нужно интерполяции т.е. 'нг-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, а скорее объект JavaScript с именем $scope, который подвергается действию вашего шаблона.

 Смежные вопросы

  • Нет связанных вопросов^_^