Локальная переменная в представлении AngularJS

0

Я новичок в AngularJS и не знаю, как решить следующую проблему: я хочу создать простое основанное на годе меню:

  • 2015
    • август
    • июль
    • ...
  • 2014
    • декабрь
    • ...

Вот мой код:

контроллер:

$scope.dateItems = [{date: <date_object>, year:<year_as_string>}, {date: <date_object>, year:<year_as_string>}, ...]

Посмотреть:

<ul class="dropdown-menu" role="menu" ng-init="year = '0'">
    <div ng-repeat="item in dateItems">
        <span ng-if="item.year !== year">
            <li role="menuitem">{{item.date | date:'yyyy'}}</li>
            <!-- change local variable "year" (see ng-init above) to item.year -->
        </span>
        <li role="menuitem">{{item.date | date:'MMM'}}</li>
    </div>
</ul>

Как я могу изменить year переменную? Или есть лучшее решение вместо локальной переменной?

РЕДАКТИРОВАТЬ

Благодаря @MadScone у меня есть хорошее решение для показанного случая. Но я хочу обобщить вопрос:

<div ng-init="foo = 'bar'" ng-repeat="item in myItems">
    ...
    <div ng-if ...>
        <!-- set foo to another value -->
    </div>
</div>

Можно ли изменить значение foo в цикле? Или существует другой способ вместо ng-init создать локальную переменную, используемую только в представлении (не связанную с контроллером)?

Теги:

1 ответ

0

Вам лучше группировать свои данные по годам, так как это будет отображаться.

контроллер

$scope.dateItems = [
  {year: 2015, months: [new Date(), new Date()]},
  {year: 2014, months: [new Date(), new Date()]}
];

Посмотреть

<ul>
  <li ng-repeat="item in dateItems">
    {{ item.year }}
    <ul ng-repeat="month in item.months">
      <li>{{ month | date:'MMM' }}</li>
    </ul>
  </li>
</ul>
  • 0
    Спасибо, это элегантное решение, я буду реализовывать его, как показано на рисунке. Но кроме этого примера: возможно ли использовать локальную переменную в представлении?
  • 0
    Извините, я не очень понимаю, что вы имеете в виду. year в ваших данных dateItems , почему вы хотите создать еще одну "локальную" переменную?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню