English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
AngularJS поддерживает пользовательские атрибуты тегов, добавляя пользовательские содержимое без необходимости использования операций с узлами DOM.
Ранее упоминалось о четырех основных характеристиках AngularJS:
1 MVC
2 Модулизация
3 Инструкции
4 Двусторонняя привязка данных
Ниже будет介绍 следующее:
1 Как создать пользовательскую инструкцию
2 Использование пользовательских инструкций
3 Использование инлайновых инструкций пользовательских инструкций
Как создать пользовательскую инструкцию:
Angular - это фреймворк, основанный на модулях, поэтому сначала нужно создать свой модуль:
var myAppModule = angular.module("myApp",[]);
Затем создайте инструкцию directive на основе этого модуля
myAppModule.directive("xingoo",function(){ return{ restrict:'AECM', template:'<div>hello my directive</div>', repalce:true } });
Xingoo - это имя нашего пользовательского тега, за которым следует его функция.
Функция return возвращает комбинацию ключей и значений, в которой определяются способы использования тега, атрибуты и т.д.
Посмотрим, что оно определяет:
1 restrict: определяет способ использования тега, всего四种,分别是 AECM
2 template: определяет шаблон тега. Внутри находится строка, которая используется для замены пользовательского тега
3 replace: поддерживает ли замена
4 transclude: поддерживает ли внедрение
Как использовать инструкции:
Как уже упоминалось, существует четыре способа использования тегов, то есть AECM.
A атрибут: используйте как атрибут
<div xingoo></div>
E элемент: используйте как элемент тега
<xingoo></xingoo>
C класс: используйте как CSS стиль
<div class="xingoo"></div>
M комментарии: используйте как комментарии (этот способ был протестирован и не работает в версии 1.2!)
<!-- directive:xingoo -->
<div></div>
Обычно рекомендуется использовать как атрибуты, так и элементы.
Когда вы хотите расширить атрибуты существующего тега html, используйте способ атрибутов.
Когда вы хотите создать пользовательский тег, используйте форму тега.
Чтобы использовать способ, необходимо声明 соответствующую букву в свойстве restrict инструкции.
Использование инлайновых инструкций:
Поскольку внутри тега можно использовать другие теги, чтобы использовать другие элементы тегов в пользовательских тегах, вам нужно:
1 Используйте атрибут transclude и установите его значение в true.
2 Используйте атрибут ng-transclude, чтобы определить местоположение внутренней вложенности.
Код таков:
myAppModule.directive("test",function(){ return{ restrict:'AECM', transclude:true, template:"<div>haha! <div ng-transclude></div> wuwu!</div>" } });
Вся кода
<!doctype html> <html ng-app="myApp"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"></script> </head> <body> <xingoo></xingoo> <div xingoo></div> <div class="xingoo"></div> <!-- directive:xingoo --> <div></div> <hr> <xingoo>3333</xingoo> <hr> <test>4444</test> <script type="text/javascript"> var myAppModule = angular.module("myApp",[]); myAppModule.directive("xingoo",function(){ return{ restrict:'AECM', template:'<div>hello my directive</div>', repalce:true } }); myAppModule.directive("test",function(){ return{ restrict:'AECM', transclude:true, template:"<div>haha! <div ng-transclude></div> wuwu!</div>" } }); </script> </body> </html>
Результат выполнения
Это является материалом для сбора данных о пользовательских директивах AngularJS, и в будущем будут продолжены дополнения соответствующих данных, спасибо всем за поддержку нашего сайта!
Заявление: Контент этой статьи взят из интернета, авторские права принадлежат их законным владельцам, контент был предоставлен пользователями Интернета в качестве добровольного вклада и загружен самостоятельно, этот сайт не имеет права собственности на него, не был отредактирован вручную и не несет ответственности за соответствующие юридические последствия. Если вы обнаружите подозрительный контент, касающийся авторских прав, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма замените # на @) для жалоб и предоставьте соответствующие доказательства. Если будет установлено, что контент нарушает авторские права, сайт немедленно удаляет涉嫌侵权的内容.