Spec-Zone.ru › Angular.js 1.7

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

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

Обзор

Директива ngProp связывает выражение со свойством элемента DOM. ngProp позволяет записывать в произвольные свойства, включая имя свойства в атрибуте, например ng-prop-value="'my value'" связывает «my value» со свойством value.

Обычно в AngularJS нет необходимости записывать в свойства, так как встроенные директивы обрабатывают наиболее распространённые случаи использования (вместо вышеприведённого примера, вы бы использовали ngValue).

Однако, ngProp часто используют пользовательские свойства для хранения данных, и ngProp может быть использован для предоставления входных данных этим пользовательским элементам.

Связывание с camelCase свойствами

Поскольку атрибуты HTML нечувствительны к регистру, свойства camelCase, такие как innerHTML, должны быть экранированы. AngularJS использует символ подчеркивания (_) перед символом для обозначения заглавной буквы, поэтому innerHTML должно быть записано как ng-prop-inner_h_t_m_l="expression" (Обратите внимание, что это всего лишь пример, и для связывания HTML ngBindHtml следует использовать).

Безопасность

Связывание выражений с произвольными свойствами представляет собой риск безопасности, так как свойства, такие как innerHTML, могут вставлять потенциально опасный HTML в приложение, например теги script, которые выполняют вредоносный код. По этой причине ngProp применяет жёсткое контекстное экранирование с помощью $sce service. Это означает, что уязвимые свойства требуют, чтобы их содержимое было «доверенным», в зависимости от контекста свойства. Например, innerHTML находится в контексте HTML, а свойство iframe.src находится в контексте RESOURCE_URL, что требует, чтобы значения, записанные в это свойство, были доверенными как RESOURCE_URL.

Это можно задать явно, вызвав $sce.trustAs(type, value) для значения, которому доверяют, прежде чем передавать его в директиву ng-prop-*. Существуют сокращённые методы для каждого типа контекста в форме $sce.trustAsResourceUrl() и т. д.

В некоторых случаях вы также можете полагаться на автоматическую очистку недоверенных значений — см. ниже.

В зависимости от контекста могут быть и другие варианты для маркировки значения как доверенного / настройки поведения $sce. Например, чтобы ограничить контекст RESOURCE_URL определёнными источниками, используйте resourceUrlWhitelist() и resourceUrlBlacklist().

Узнайте больше о различных типах контекстов.

Очистка HTML

По умолчанию $sce выдаст ошибку, если обнаружит недоверенное содержимое HTML, и не свяжет содержимое. Однако, если вы включите модуль ngSanitize, он попытается очистить потенциально опасный HTML, например, удалить нераспознанные теги и атрибуты при связывании с innerHTML.

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

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

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

<ANY ng-prop-propname="expression">
</ANY>

или с заглавными буквами в свойстве (например, «propName»):

<ANY ng-prop-prop_name="expression">
</ANY>

Примеры

Связывание с различными контекстами

Связывание с innerHTML с помощью ngSanitize

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

Spec-Zone.ru

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