我正在尝试通过angular的ng-repeat在选择框中显示年份列表,但它在年份列表之前显示空行,而不显示应该在列表中第一年的选定值。您可以在代码示例中看到。任何帮助将不胜感激。



 angular.module('F1FeederApp', ['F1FeederApp.controllers']);

  angular.module('F1FeederApp.controllers', []).

  /* Drivers controller */
  controller('driversController', function($scope) {

    $scope.years = getYearRange();

  });
  /* Year Range Code */
  function getYearRange() {
  var startYear = new Date().getFullYear();
  var endYear = 2005;
  var dateRange = [];

  while(endYear <= startYear) {
      dateRange.push(startYear);
      startYear -= 1
  }
  return dateRange;
}

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script>
<div ng-app="F1FeederApp">
  <div ng-controller="driversController">
      <select ng-model="F1s_Selection" class="btn btn-default">
       <option ng-repeat="year in years">{{year}}</option>
      </select>
</div>
  </div>

最佳答案

使用ng-options代替ng-repeat可以,效果更好。



angular.module('F1FeederApp', ['F1FeederApp.controllers']);
angular.module('F1FeederApp.controllers', []).

  /* Drivers controller */
  controller('driversController', function($scope) {

    $scope.years = getYearRange();

  });
  /* Year Range Code */
  function getYearRange() {
  var startYear = new Date().getFullYear();
  var endYear = 2005;
  var dateRange = [];

  while(endYear <= startYear) {
      dateRange.push(startYear);
      startYear -= 1
  }
  return dateRange;
}

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script>
<div ng-app="F1FeederApp">
  <div ng-controller="driversController">
      <select ng-model="F1s_Selection" ng-options="year as year for year in years | orderBy:year track by years  " class="btn btn-default">
      </select>
</div>
  </div>

09-20 23:09