Spec-Zone.ru › Angular.js 1.3

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

  1. $interpolateProvider
  2. сервис в модуле ng

Компилирует строку с разметкой в функцию интерполяции. Этот сервис используется сервисом HTML $compile для привязки данных. Смотрите $interpolateProvider для настройки разметки интерполяции.

var $interpolate = ...; // injected
var exp = $interpolate('Hello {{name | uppercase}}!');
expect(exp({name:'Angular'}).toEqual('Hello ANGULAR!');

$interpolate принимает необязательный четвёртый аргумент, allOrNothing. Если allOrNothing равно true, функция интерполяции вернёт undefined, если все вложенные выражения не равны значению undefined.

var $interpolate = ...; // injected
var context = {greeting: 'Hello', name: undefined };

// default "forgiving" mode
var exp = $interpolate('{{greeting}} {{name}}!');
expect(exp(context)).toEqual('Hello !');

// "allOrNothing" mode
exp = $interpolate('{{greeting}} {{name}}!', false, null, true);
expect(exp(context)).toBeUndefined();
context.name = 'Angular';
expect(exp(context)).toEqual('Hello Angular!');

allOrNothing полезна для интерполяции URL-адресов. ngSrc и ngSrcset используют это поведение.

Экранированная интерполяция

$interpolate предоставляет механизм для экранирования маркеров интерполяции. Стартовые и конечные маркеры можно экранировать, предваряя каждый их символ обратной косой чертой U+005C (обратный слэш). Она будет отображаться как обычный стартовый/конечный маркер и не будет интерпретироваться как выражение или привязка.

Это позволяет веб-серверам в некоторой степени предотвращать атаки со скриптовым инъекциями и атаки на подмену, а также позволяет использовать примеры кода, не полагаясь на директиву ngNonBindable.

Для обеспечения безопасности настоятельно рекомендуется, чтобы веб-серверы экранировали данные, предоставляемые пользователем, заменяя угловые скобки (<, >) на &lt; и &gt; соответственно, а все маркеры начала/конца интерполяции — на их экранированные аналоги.

Экранированные маркеры интерполяции заменяются фактическими маркерами интерполяции только в выходных данных, когда сервис $interpolate обрабатывает текст. Таким образом, для HTML-элементов, интерполированных с помощью $compile, или интерполированных с параметром mustHaveExpression установленном в значение true, интерполированный текст должен содержать неэкранированное выражение интерполяции. Поэтому это обычно полезно только в случае, если данные пользователя используются для рендеринга шаблона с сервера или в случае использования недоверенных данных в директиве.

Зависимости

  • $parse
  • $sce

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

$interpolate(text, [mustHaveExpression], [trustedContext], [allOrNothing]);

Аргументы

Параметр Тип Подробности
text string

Текст с разметкой для интерполяции.

mustHaveExpression
(необязательно)
boolean

Если установлено в true, то строка интерполяции должна содержать вложенное выражение, чтобы вернуть функцию интерполяции. Строки без вложенных выражений вернут null для функции интерполяции.

trustedContext
(необязательно)
string

При указании возвращаемая функция пропускает интерполированный результат через $sce.getTrusted(interpolatedResult, trustedContext) перед возвратом. Подробнее см. сервис $sce, который обеспечивает строгую контекстуальную экранировку.

allOrNothing
(необязательно)
boolean

Если true, то возвращаемая функция возвращает undefined, если все вложенные выражения не равны значению undefined.

Возвращаемое значение

function(context)

функция интерполяции, используемая для вычисления интерполированной строки. Функция имеет следующие параметры:

  • context: контекст оценки всех выражений, вложенных в интерполированный текст

Методы

  • startSymbol();

    Символ, обозначающий начало выражения в интерполированной строке. По умолчанию {{.

    Изменить символ можно с помощью $interpolateProvider.startSymbol.

    Возвращаемое значение

    string

    символ начала.

  • endSymbol();

    Символ, обозначающий конец выражения в интерполированной строке. По умолчанию }}.

    Изменить символ можно с помощью $interpolateProvider.endSymbol.

    Возвращаемое значение

    string

    символ конца.

© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.3.20/docs/api/ng/service/$interpolate

Spec-Zone.ru

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