Что такое директива AngularJS?
Я провел довольно много времени, читая документацию AngularJS и несколько учебных пособий, и я был очень удивлен тем, насколько недоступна документация.
У меня есть простой, ответный вопрос, который также может быть полезен другим, кто хочет забрать AngularJS:
что такое директива AngularJS?
где-то должно быть простое, точное определение директивы, но сайт AngularJS предлагает эти удивительно бесполезные определения:
директивы-это уникальная и мощная функция, доступная в AngularJS. Директивы позволяют изобретать новый синтаксис HTML, специфичный для вашего приложения.
на документация для разработчиков:
директивы-это способ научить HTML новым трюкам. Во время компиляции DOM директивы сопоставляются с HTML и выполненный. Это позволяет директивам регистрировать поведение или преобразовывать DOM.
и
5 ответов:
что это такое (см. четкое определение jQuery в качестве примера)?
директива по существу является функцией† это выполняется, когда угловой компилятор находит его в DOM. Функция(ы) может делать почти все, поэтому я думаю, что довольно сложно определить, что такое директива. Каждая директива имеет имя (например, ng-repeat, tabs, make-up-your-own), и каждая директива определяет, где она может быть использована: элемент, атрибут, класс, В a комментировать.
† директива обычно имеет только функцию связи (post). Сложная директива может иметь функцию компиляции, функцию pre-link и функцию post-link.
какие практические проблемы и ситуации он призван решать?
самое мощное, что могут сделать директивы, это расширить HTML. Ваши расширения-это Домен Специфический Язык (DSL) для построения вашего приложения. Например, если ваш приложение запускает сайт онлайн-покупок, вы можете расширить HTML, чтобы иметь "корзину покупок", "купон", "специальные предложения" и т. д. директивы -- любые слова или объекты или понятия более естественны для использования в домене "интернет-магазины", а не"div "и"span" s (Как уже упоминалось @WTK).
директивы также могут компонентным подходом в HTML -- группы кучу HTML в некоторые повторно используемый компонент. Если вы обнаружите, что используете ng-include для извлечения большого количества HTML, вероятно, пришло время для рефакторинга директивы.
какой шаблон дизайна он воплощает, или, альтернативно, как он вписывается предполагаемая миссия MVC / MVW от angularjs
директивы, где вы манипулируете DOM и поймать DOM события. Вот почему функции compile и link директивы получают "элемент" в качестве аргумента. Вы можете
- определите кучу HTML (т. е. шаблон), чтобы заменить директиву
- привязать события к этому элемент (или его дочерние элементы)
- добавить/удалить класс
- изменить значение text ()
- следите за изменениями атрибутов, определенных в том же элементе (на самом деле это значения атрибутов, которые наблюдаются-это свойства области, поэтому директива наблюдает за "моделью" для изменений)
- etc.
В HTML у нас есть такие вещи, как<a href="...">,<img src="...">,<br>,<table><tr><th>. Как бы вы описали то, что, слишком, img, src, br, table, tr и т. д.? Вот что такое директива.
может быть, действительно простой и начальный определение угловых директив будет
директивы в AngularJS (НГ-директивы), являются HTML-атрибуты с префиксом НГ (НГ-модель и НГ-приложение, НГ-повторите, НГ-привязать) используется для угловой расширяет HTML. (от: W3schools угловой учебник)
некоторые примеры этого были бы
на ng-app директива определяет приложение AngularJS.
на ng-model директива связывает значение HTML-элементов управления (вход, select, textarea) к данным приложения.
на ng-bind директива связывает данные приложения с представлением HTML.
<div ng-app=""> <p>Name: <input type="text" ng-model="name"></p> <p ng-bind="name"></p> </div>проверьте этот учебник, по крайней мере, для меня это было одно из лучших введений в Angular. Более полный подход будет все, что @mark-rajcok сказал раньше.
глядя на документацию, директивы-это структуры, которые вы можете написать, что angularjs анализирует для создания объектов и behaviors.In другими словами, это шаблон, в котором вы используете смесь любых произвольных узлов и псевдо-javascript и заполнителей для данных, чтобы выразить намерения о том, как ваш виджет (компонент) структурирован, как он ведет себя и как он подается с данными. Angularjs затем работает против тех директивы перевести их в рабочий html / javascript код.
директивы существуют, чтобы вы могли создавать более сложные компоненты (виджеты), используя правильную семантику. Просто взгляните на пример директив angularjs-они определяют панель вкладок (которая, конечно, не действительна в обычном HTML). Это более интуитивно, чем использование как div-s или spans для создания структуры, которая затем стилизуется в выглядеть панель вкладок.
В в AngularJS директивы в HTML повторного маркеров в HTML DOM-элемент, как атрибут(ограничения - а), имя элемента(ограничения - е), комментарий(ограничение - м) или CSS-класса(ограничения - С), что сказать в AngularJS HTML-код компилятора ($компиляции), чтобы выполнить указанное поведение тем, что DOM-элемент или даже превратить в дом элемента и его детей.Некоторые примеры-ng-bind, ng-hide/show и т. д.
Домашняя страница очень ясно об этом: При наведении указателя мыши на вкладки в последнем разделе:
мы расширили словарь HTML с помощью пользовательского
tabsэлемент. Элементtabsабстрагирует сложную структуру HTML и поведение, необходимое для рендеринга вкладок. В результате получается больше читаемый вид и очень легко многоразовый синтаксис."затем в следующей вкладке:
angular.module('components', []). directive('tabs', function() { return { restrict: 'E', transclude: true, scope: {}, controller: function($scope, $element) { var panes = $scope.panes = []; $scope.select = function(pane) { angular.forEach(panes, function(pane) { pane.selected = false; }); pane.selected = true; }таким образом, вы можете изобрести html-элементы, т. е.
tabsи пусть угловые обработайте отрисовку этих элементов.
Comments