Я новичок в AngularJS. Вот мои $scope годы для селектора в html:

//get it from the backend 
$scope.years = ['2014', '2015', '2016', '2017', '2018'];

Вот мой HTML, где я использую это $scope:

<select name="repeatSelect" id="repeatSelect" ng-model="yearFromSelector">
    <option ng-repeat="year in years" value="{{year}}">{{year}}</option>
</select>

Когда я запускаю свое приложение, я вижу пустой селектор (с годами внутри) по умолчанию:

enter image description here

Но мне нужно по умолчанию селектор показывает текущий год (с другими годами внутри). Посоветуйте, пожалуйста, как мне это сделать?

0
Max Gabderakhmanov 6 Янв 2017 в 14:50

5 ответов

Лучший ответ

Вы можете использовать этот код.

В контроллере:

$scope.years = ['2014', '2015', '2016', '2017', '2018'];
var currentYear = new Date().getFullYear();
var index = $scope.years.indexOf(currentYear.toString());

$scope.yearFromSelector = $scope.years[index];

И HTML:

<select name="repeatSelect" id="repeatSelect" ng-model="yearFromSelector">
    <option ng-repeat="year in years" value="{{year}}">{{year}}</option>
</select>

Или

<select name="repeatSelect" id="repeatSelect" ng-model="yearFromSelector" ng-options="year as year for year in years">
    </select>
1
Shaishab Roy 6 Янв 2017 в 12:08

Вот простой способ реализовать это с помощью angularjs. Вам не нужно использовать значение = "{{год}}", потому что вы уже определяете фактическое значение с помощью ng-модели

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.thisYear = new Date().getFullYear();
    $scope.years = ['2014', '2015', '2016', '2017', '2018'];
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp" ng-controller="MyCtrl">
  <select name="repeatSelect" id="repeatSelect" ng-model="thisYear">
    <option ng-repeat="year in years">{{year}}</option>
  </select>
</div>
0
nivas 6 Янв 2017 в 12:34

Упрощенный ответ:

Js:

$scope.yearFromSelector = new Date().getFullYear().toString();

Html:

 <select ng-model="yearFromSelector" ng-options="year as year for year in years">
  </select>
0
Sai 6 Янв 2017 в 12:13

Сделай это

<select ng-init="yearFromSelector='2017'" name="repeatSelect" id="repeatSelect" ng-model="yearFromSelector">
    <option ng-repeat="year in years" value="{{year}}">{{year}}</option>
</select>
1
Mr_Perfect 6 Янв 2017 в 12:37

Добавьте это в контроллер:

$scope.currentYear = new Date().getFullYear();

Добавьте это к View:

<select name="repeatSelect" id="repeatSelect" ng-model="yearFromSelector">
    <option ng-selected="year == currentYear" ng-repeat="year in years" value="{{year}}">{{year}}</option>
</select>
0
Krunal 6 Янв 2017 в 12:00