ng-selected不能与ng-repeat一起使用来设置默认值

FSh*_*hah 7 angularjs ng-repeat

我正在尝试设置我使用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>
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

这是我的傻瓜

use*_*281 10

角度文档:

请注意,在没有ngOptions的情况下使用的select指令的值始终是一个字符串.当模型需要绑定到非字符串值时,您必须使用指令显式转换它(请参阅下面的示例)或使用ngOptions指定选项集.这是因为选项元素目前只能绑定到字符串值.

所以转变$scope.datamodel = 2;$scope.datamodel = '2';工作.查看更新的plunker.

但是,最好使用它ngOptions.再次,从文档:

在许多情况下,可以在<option>元素上使用ngRepeat而不是ngOptions来实现类似的结果.但是,ngOptions提供了一些好处,例如<select>通过select作为理解表达式的一部分来分配模型的灵活性,以及通过不为每个重复实例创建新范围来减少内存和提高速度.

因此,为了将模型保持为整数,您可以使用:

<select  ng-model="datamodel" ng-options="dataitem for dataitem in data">
  <option value="">Please Select</option>
</select>
Run Code Online (Sandbox Code Playgroud)

plunker