Почему добавление атрибута «value» к элементу <option> приводит к выбору неправильного значения?

0

Я использую угловой 1.2.28, и у меня есть контроллер с простым массивом значений:

$scope.transTypes = ['Write-Off', 'Adjustment'];
$scope.selectedType = 'Adjustment'

который я использую для заполнения раскрывающегося элемента <select>.

Если я создаю такую уценку (без атрибута "value"), то отображается правильное значение:

  <select ng-model="selectedType">
    <option ng-repeat="type in transTypes">{{type}}</option>
  </select>

Когда я создаю свою уценку с атрибутом "значение", отображается неправильное значение:

  <select ng-model="selectedType">
    <option ng-repeat="type in transTypes" value="{{type}}">{{type}}</option>
  </select>

Plunker: http://plnkr.co/edit/lRqZSrxwEle3qUtT9cxi?p=preview

  • 1
    Настоятельно рекомендуется использовать ng-options в вашем случае!
Теги:
angularjs-ng-repeat

4 ответа

1
Лучший ответ

Я использовал ng-value в вашем плункере, и он работал нормально, возможно, что угловые искали ценность в более новых версиях для устранения таких проблем.

  • 0
    Спасибо, похоже, что сделал свое дело. Хотите знать, зачем мне нужен префикс ng для некоторых атрибутов HTML, но не для других?
  • 0
    Не могли бы вы привести пример, который работает без префикса ng?
Показать ещё 1 комментарий
1

Просто переименуйте: ng-value="type". Это будет работать.

<select ng-model="selectedType">
            <option  ng-repeat="type in transTypes" ng-value="type">{{type}}</option>
          </select>
1

Вам нужно создать контроллер для передачи переменных в dom. Например:

HTML:

<html ng-app="App">
  <body ng-controller="myController as myCtrl">

    <select ng-model="myCtrl.selectedType">
      <option ng-repeat="type in myCtrl.transTypes">{{type}}</option>
    </select>

  </body>
</html>

JS:

angular.module('App', [])
.controller('myController', function() {

  var _this = this;

  _this.transTypes = ['Write-Off', 'Adjustment'];
  _this.selectedType = 'Adjustment'

});

Вы можете увидеть в действии:

http://codepen.io/anon/pen/VePZLa?editors=101

0

Я попробовал обновить до последней версии углового 1.3, но ошибка осталась. Когда я поднялся до углового 1.4, ошибка, похоже, исчезла.

Работает над версией 1.4: http://plnkr.co/edit/cbIRgGViOyxeQ9t3PKbK?p=preview

Возможно, что более ранняя версия углов не поддерживает установку атрибута "значение".

ignore this line, can't submit without code snippet.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню