Spec-Zone.ru › Angular.js 1.4

Улучшить эту документацию Просмотреть исходный код $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.4.14/docs/api/ng/service/$interpolate

Spec-Zone.ru

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