ng-selected在ng-repeat中无法设置默认值

7

我想设置选项的默认值,我正在使用select和ng-repeat。我在js文件中获得数据,并调用模型来设置值。

请查看下面的代码:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example - example-ngrepeat-select-production</title>


  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.2/angular.min.js"></script>
  <script src="app.js"></script>



</head>
<body ng-app="ngrepeatSelect">
  <div ng-controller="ExampleController">
  <form name="myForm">
    <label for="repeatSelect"> Repeat select: </label>
    <select  ng-model="datamodel">
      <option ng-repeat="dataitem in data"
                ng-selected ="{{dataitem == datamodel}}">{{dataitem}}</option>
    </select>
  </form>
  <hr>
  <tt>repeatSelect = {{datamodel}}</tt><br/>
</div>
</body>
</html>

app.js 文件

(function(angular) {
  'use strict';
angular.module('ngrepeatSelect', [])
  .controller('ExampleController', ['$scope', function($scope) {
    $scope.data = [1,2,3,4,5];

    $scope.datamodel = 2;
 }]);
})(window.angular);

这是我的plunker

1个回答

10

根据AngularJS文档

请注意,未使用ngOptions的select指令的值始终为字符串。当模型需要绑定到非字符串值时,必须通过指令显式地转换它(请参见下面的示例)或使用ngOptions来指定选项集。这是因为当前的option元素只能绑定到字符串值。

因此,将 $scope.datamodel = 2;更改为$scope.datamodel = '2'; 即可解决问题。请查看更新后的plunker

但更好的做法是使用 ngOptions。再次引用文档中的内容:

在许多情况下,可以在


成功了!太棒了!我刚刚把整数转换成字符串,一切都准备就绪了。 - FShah
我正在尝试将最大数量设置为默认值,但不是从.js文件中设置,因此我正在使用ng-repeat。这是链接:(http://plnkr.co/edit/zJbQTVPaErP2dKe5gUXv?p=preview) - FShah
@FShah认为你仍然可以使用ng-options,你能否fork你的plunker以展示你的意思?如果列表从小到大排序,你可能可以使用ng-init将你的模型值设置为列表中的最后一个元素。 - logee
@FShah 这是您要找的吗?它只适用于您的“data”列表已排序的假设。 - logee
完美 - 这正是我在寻找的,太棒了。 - FShah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接