Spec-Zone.ru › Angular.js 1.7

Улучшить эту документацию Просмотреть исходный код ngPluralize

  1. директива в модуле ng

Обзор

ngPluralize — это директива, которая отображает сообщения в соответствии с правилами локализации en-US. Эти правила включены в angular.js, но могут быть переопределены (см. руководство по локализации AngularJS i18n). Вы настраиваете директиву ngPluralize, указав соответствия между категориями множественного числа и строками, которые должны отображаться.

Категории множественного числа и явные правила для чисел

В стандартной локали en-US AngularJS есть две категории множественного числа: "one" и "other".

Хотя категория множественного числа может соответствовать многим числам (например, в локали en-US "other" может соответствовать любому числу, не равному 1), явное правило для числа может соответствовать только одному числу. Например, явное правило для числа "3" соответствует числу 3. Примеры категорий множественного числа и явных правил для чисел приведены в остальной части этой документации.

Настройка ngPluralize

Вы настраиваете ngPluralize, предоставив 2 атрибута: count и when. Вы также можете указать необязательный атрибут offset.

Значение атрибута count может быть строкой или выражением AngularJS; они вычисляются в текущем контексте для связанного значения.

Атрибут when указывает соответствия между категориями множественного числа и отображаемыми строками. Значение атрибута должно быть объектом JSON.

Следующий пример показывает, как настроить ngPluralize:

<ng-pluralize count="personCount"
                 when="{'0': 'Nobody is viewing.',
                     'one': '1 person is viewing.',
                     'other': '{} people are viewing.'}">
</ng-pluralize>

В примере "0: Nobody is viewing." — это явное правило для числа. Если вы не указали это правило, 0 будет сопоставлено категории "other", и вместо "Nobody is viewing" будет отображаться "0 people are viewing". Вы можете указать явное правило для других чисел, например, для 12, чтобы вместо "12 people are viewing" отображалось "a dozen people are viewing".

Вы можете использовать набор фигурных скобок ({}) в качестве заполнитель числа, которое нужно подставить в строку множественного числа. В предыдущем примере AngularJS заменит {} на {{personCount}}. Фигурные скобки {} — это заполнители для {{numberExpression}}.

Если для категории не определено правило, отображается пустая строка, и генерируется предупреждение. Обратите внимание, что некоторые локали определяют больше категорий, чем one и other. Например, fr-fr определяет few и many.

Настройка ngPluralize с помощью смещения

Атрибут offset позволяет дополнительно настроить текст множественного числа, что может улучшить пользовательский опыт. Например, вместо сообщения "4 people are viewing this document" можно отобразить "John, Kate and 2 others are viewing this document". Атрибут смещения позволяет сместить число на любое необходимое значение. Давайте рассмотрим пример:

<ng-pluralize count="personCount" offset=2
              when="{'0': 'Nobody is viewing.',
                     '1': '{{person1}} is viewing.',
                     '2': '{{person1}} and {{person2}} are viewing.',
                     'one': '{{person1}}, {{person2}} and one other person are viewing.',
                     'other': '{{person1}}, {{person2}} and {} other people are viewing.'}">
</ng-pluralize>

Обратите внимание, что мы по-прежнему используем две категории множественного числа (one, other), но добавили три явных правила для чисел 0, 1 и 2. Когда один человек, скажем, John, просматривает документ, отобразится "John is viewing". Когда три человека просматривают документ, явное правило не найдено, поэтому из 3 вычитается смещение 2, и AngularJS использует 1 для определения категории множественного числа. В этом случае соответствует категория множественного числа "one", и отображается "John, Mary and one other person are viewing".

Обратите внимание, что при указании смещения необходимо указать явные правила для чисел от 0 до и включая смещение. Если вы используете смещение 3, например, вам необходимо указать явные правила для 0, 1, 2 и 3. Также необходимо предоставить строки для категорий множественного числа "one" и "other".

Информация о директиве

  • Эта директива выполняется на уровне приоритета 0.

Использование

  • в качестве элемента:
    <ng-pluralize
      count=""
      when="string"
      [offset="number"]>
    ...
    </ng-pluralize>
  • в качестве атрибута:
    <ANY
      ng-pluralize
      count=""
      when="string"
      [offset="number"]>
    ...
    </ANY>

Аргументы

Параметр Тип Подробности
count stringexpression

Переменная, к которой будет привязано значение.

when string

Сопоставление между категорией множественного числа и соответствующими строками.

offset
(необязательно)
number

Смещение для вычитания из общего числа.

Пример

© 2010–2018 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.7.8/docs/api/ng/directive/ngPluralize

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API