Spec-Zone.ru › Angular.js 1.8

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

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

Обзор

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

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

Однако, настраиваемые элементы часто используют пользовательские свойства для хранения данных, и 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 до определённых источников используйте trustedResourceUrlList() и bannedResourceUrlList().

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

Очистка HTML

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

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

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

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

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

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

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

Примеры

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

Привязка к innerHTML с ngSanitize

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

Spec-Zone.ru

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