Angular - переменная области видимости ng-init не отображается

У меня есть следующее в моем index.html

   <header>
    <select ng-model="date.month" ng-init="currentMonth" ng-options="month for month in months">
    </select>

    <select ng-model="date.year" ng-init="date.year" ng-options="year for year in years">
    </select>
    </header>

У меня есть следующее в моем app.js

.controller('MainCtrl', function ($scope) {
    var today = new Date();
    var year = today.getFullYear();
    var month = today.getMonth();

    $scope.date = {
        year: year,
        month: month
    };

    $scope.months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

    $scope.currentMonth = $scope.months[month - 1];

    var years = [];

    var earliestYear = year - 100;
    for (var i = earliestYear; i <= year; i++) {
        years.push(i);
    }

    $scope.years = years;

    $scope.$watchCollection('date', function (date) {
        $scope.currentDate = new Date(date.year, date.month, 1);
    });

Мой ng-init для "date.year" работает, но не для "currentMonth". Тем не менее, я знаю, что currentMonth связан с представлением. Почему ng-init не распознает ng-init="currentMonth"?

1 ответ

Решение

ng-init это выражение, поэтому вам нужно назначить currentMonth на ваш date.month модель.

<select ng-model="date.month" ng-init="date.month=currentMonth" ng-options="month for month in months">
</select>

ng-init="date.year" на самом деле ничего не делает. date.year модель уже была назначена 2016 Похоже, это работает.

Смотреть плункер

Другие вопросы по тегам