Невозможно выбрать значение валюты в ng-опции - PullRequest
0 голосов
/ 02 марта 2020

У меня есть код в HTML

{{cm.currency}}
<select name="currency" id="currency" ng-model="cm.currency" class="form-control"
       ng-options="c.code as c.code +' ' +c.name for c in currencies track by c.code">
</select>

в контроллере

 $scope.cm={currency:'INR'};
 $scope.currencies=[
     {code: "USD", id: 1, name: "US Dollar" ,symbol: "$"},
     {code: "INR", id: 2, name: "Indian Rupee", symbol: "₹"},
     {code: "EUR", id: 3, name: "Euro", symbol: "€"},
 ];

{{cm.currency}} показывает правильное значение валюты, но не выбирает значение в ng-option

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Просто удалите предложение track by:

<select nname="currency" id="currency" ng-model="cm.currency" class="form-control"
  ̶n̶g̶-̶o̶p̶t̶i̶o̶n̶s̶=̶"̶o̶p̶t̶i̶o̶n̶.̶c̶o̶d̶e̶ ̶a̶s̶ ̶o̶p̶t̶i̶o̶n̶.̶c̶o̶d̶e̶+̶'̶ ̶'̶+̶o̶p̶t̶i̶o̶n̶.̶n̶a̶m̶e̶ ̶f̶o̶r̶ ̶o̶p̶t̶i̶o̶n̶ ̶i̶n̶ ̶c̶u̶r̶r̶e̶n̶c̶i̶e̶s̶ 
               ̶t̶r̶a̶c̶k̶ ̶b̶y̶ ̶o̶p̶t̶i̶o̶n̶.̶i̶d̶"̶

  ng-options="option.code as option.code+' '+option.name for option in currencies">

Из документов:

select as и track by

Be Будьте осторожны при использовании select as и track by в одном и том же выражении.

- AngularJS <select> Директива API Reference - select as и track by

ДЕМО

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cm={currency:'INR'};
    $scope.currencies=[
       {code: "USD", id: 1, name: "US Dollar" ,symbol: "$"},
       {code: "INR", id: 2, name: "Indian Rupee", symbol: "₹"},
       {code: "EUR", id: 3, name: "Euro", symbol: "€"}
    ];
});
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="myApp" ng-controller="myCtrl">

    <select nname="currency" id="currency" ng-model="cm.currency"
            class="form-control"
            ng-options="option.code as option.code+' '+option.name for
                        option in currencies">          
    </select>
    <br/>
    <tt>Selected value: {{cm.currency}}</tt>

</select>

</body>
1 голос
/ 02 марта 2020

Используйте директиву ng-selected для привязки выбранной по умолчанию опции.

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<select nname="currency" id="currency" ng-model="cm.currency" class="form-control"
   ng-selected=" cm.currency == option.code"  
   ng-options="option.code as option.code+' '+option.name for option in currencies">          
</select>
<br/> <tt>Selected value: {{cm.currency}}</tt>

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.cm={currency:'INR'};
    $scope.currencies=[{code: "USD", id: 1, name: "US Dollar" ,symbol: "$"},{code: "INR", id: 2, name: "Indian Rupee", symbol: "₹"},{code: "EUR", id: 3, name: "Euro", symbol: "€"}];
});
</script>

</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...