=====Параметры директив===== С помощью дополнительных свойств мы можем настроить применение директивы. Рассмотрим два свойства: **link** и **restrict**.\\ \\ Свойство link позволяет задать функцию директивы. А свойство restrict позволяет указать объект, к которому директива будет применяться. Оно может иметь следующие значения:\\ * **E**: директива применяется к элементу * **A**: директива применяется к атрибуту * **C**: директива применяется к классу * **M**: директива применяется к комментарию Данные значения можно комбинировать.\\ Например, возьмем директиву из прошлой темы и используем выше рассмотренные свойства: questApp.directive("answerList", function () { return { link: function (scope, element, attrs) { var data = scope[attrs["answerList"] ||attrs["source"]]; if (angular.isArray(data.answers)) { var divElem = angular.element("
").addClass("answers"); if (element[0].nodeName == "#comment") { element.parent().append(divElem); } else { element.append(divElem); } for (var i = 0; i < data.answers.length; i++) { var answerElem = angular.element('
').addClass("answer"); var voteElem = angular.element('
').addClass("vote"); var voteUpElem = angular.element('').addClass("vote-up"); voteElem.append(voteUpElem); var rateElem = angular.element('').addClass("rate").text(data.answers[i].rate); voteElem.append(rateElem); var voteDownElem = angular.element('').addClass("vote-down"); voteElem.append(voteDownElem); answerElem.append(voteElem); answerElem.append(angular.element('').text(data.answers[i].text)); answerElem.append(angular.element('

').text(data.answers[i].author)); var iElem =angular.element('').text(data.answers[i].date); var dateElem = angular.element('

').append(iElem); answerElem.append(dateElem); divElem.append(answerElem); } } }, restrict: "EACM" } }); В данном случае директива применяется ко всем четырем типам объектов. Рассмотрим, как применять директиву к отдельным объектам.\\ ====Применение директивы к элементам==== Для применения директивы к элементам, нам надо создать соответствующий элемент: Здесь добавлен еще один атрибут - source, который принимает данные для директивы. Тогда в самой директиве нам надо изменить метод получения данных: var data = scope[attrs["answerList"] ||attrs["source"]]; ====Применение директивы к классам==== Преобразуем элемент в следующий:

Код директивы остается тем же. ====Применение директивы к комментариям==== Комментарий в коде html должен начинаться со слова directive, за которым следует двоеточие, имя директивы и объект, передаваемый в директиву: Тогда в коде директивы определяются два возможных пути: если директивы применяется к комментарию и остальные случаи if (element[0].nodeName == "#comment") { element.parent().append(divElem); } else { element.append(divElem); }