为什么在<option>元素中添加“value”属性会导致选择错误的值?

时间:2015-12-31 17:28:21

标签: angularjs angularjs-ng-repeat

我正在使用角度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>

当我使用'value'属性创建markdown时,会显示错误的值:

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

我在你的plunker中使用了ng-value并且它运行良好,有角度可能会在较新版本中寻找值以解决这些问题。

答案 2 :(得分:1)

只需重命名:ng-value="type"。它会起作用。

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

答案 3 :(得分:0)

我尝试升级到角度1.3的最新版本,但错误仍然存​​在。当我升级到1.4角时,这个小虫似乎消失了。

适用于1.4:http://plnkr.co/edit/cbIRgGViOyxeQ9t3PKbK?p=preview

旧版角度可能不支持设置“value”属性。

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