ng-init в angularjs у меня не работал

#javascript #angularjs

#javascript #angularjs

Вопрос:

Я пытаюсь установить выпадающий список на текущий месяц, который является октябрем, но это не работает, какие-нибудь подсказки, ребята?

http://plnkr.co/edit/qtPvCy4phNQW6I6IPQyr?p=preview

 app.controller('MainCtrl', function($scope) {
  var d = new Date();
        var month = new Array();

        var this_year = d.getFullYear();

        month[0] = "January "   this_year;
        month[1] = "February "   this_year;
        month[2] = "March "   this_year;
        month[3] = "April "   this_year;
        month[4] = "May "   this_year;
        month[5] = "June "   this_year;
        month[6] = "July "   this_year;
        month[7] = "August "   this_year;
        month[8] = "September "   this_year;
        month[9] = "October "   this_year;
        month[10] = "November "   this_year;
        month[11] = "December "   this_year;

        $scope.months = month;

        $scope.this_month = month[d.getMonth()]   " "   this_year; // won't work?
});
  

Ответ №1:

Вы можете установить месяц по умолчанию, присвоив текущему месяцу значение model selected_month .

 $scope.selected_month = $scope.months[d.getMonth()];
  

Plunker

Ответ №2:

Проблема решена: ngInit использовался для установки значений по умолчанию, и вы пытались установить это, но неправильно, смотрите Этот пример, пожалуйста

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

app.controller('MainCtrl', function($scope) {
  var d = new Date();
  		var month = new Array();

  		var this_year = d.getFullYear();

  		month[0] = "January "   this_year;
  		month[1] = "February "   this_year;
  		month[2] = "March "   this_year;
  		month[3] = "April "   this_year;
  		month[4] = "May "   this_year;
  		month[5] = "June "   this_year;
  		month[6] = "July "   this_year;
  		month[7] = "August "   this_year;
  		month[8] = "September "   this_year;
  		month[9] = "October "   this_year;
  		month[10] = "November "   this_year;
  		month[11] = "December "   this_year;

  		$scope.months = month;
  		
  	$scope.this_month = month[d.getMonth()]; // won't work?
});  
 <!DOCTYPE html>
<html ng-app="plunker">

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="'   document.location   '" />');</script>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.0.x" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js" data-semver="1.0.7"></script>
  </head>

  <body ng-controller="MainCtrl">
 <select style="position: relative;margin-top: -50px;" class="pull-right" ng-model="selected_month" ng-options="m for m in months" ng-init="selected_month = this_month">
          </select>
          </body>

</html>  

Ответ №3:

Скорее всего, вы определяете функцию на контроллере и вызываете метод в ng-init. например

 ng-init="this_month()" 
  

Измените эту строку на контроллере:

 $scope.this_month = month[d.getMonth()]   " "   this_year; // won't work?
  

Для:

  $scope.this_month = //Change this line....
        function(){
              $scope.selected_month = $scope.months[d.getMonth()];
        };