(function (app) { 'use strict'; app.directive('prZeroDad', function () { return { template: function () {logIt('DAD template 0');}, controller: function () {logIt('DAD controller 0');}, compile: function () { logIt('DAD compile 0'); return { pre: function () {logIt('DAD pre link 0');}, post: function () {logIt('DAD post link 0');} }; }, restrict: 'A' }; }); app.directive('prZeroSon', function () { return { template: function () {logIt('SON template 0');}, controller: function () {logIt('SON controller 0');}, compile: function () { logIt('SON compile 0'); return { pre: function () {logIt('SON pre link 0');}, post: function () {logIt('SON post link 0');} }; }, restrict: 'A' }; }); app.directive('prHighestDad', function ($compile) { return { controller: function () {logIt('DAD controller 200');}, compile: function () { logIt('DAD compile 200'); return { pre: function () {logIt('DAD pre link 200');}, post: function (a,b,c,d,$trFn) {logIt('DAD post link 200');} }; }, priority: 200, restrict: 'A' }; }); app.directive('prHighestSon', function ($compile) { return { controller: function () {logIt('SON controller 200');}, compile: function () { logIt('SON compile 200'); return { pre: function () {logIt('SON pre link 200');}, post: function (a,b,c,d,$trFn) {logIt('SON post link 200');} }; }, priority: 200, restrict: 'A' }; }); app.directive('prLowestDad', function () { return { controller: function () { logIt('DAD controller -200<br/>----------------------<br/>'); }, compile: function () { logIt('DAD compile -200<br/>----------------------<br/>'); return { pre: function () { logIt('DAD pre link -200<br/>----------------------<br/>'); }, post: function () {logIt('DAD post link -200');} }; }, priority: -200, restrict: 'A' }; }); app.directive('prLowestSon', function () { return { controller: function () { logIt('SON controller -200<br/>----------------------<br/>'); }, compile: function () { logIt('SON compile -200<br/>----------------------<br/>'); return { pre: function () { logIt('SON pre link -200<br/>----------------------<br/>'); }, post: function () {logIt('SON post link -200');} }; }, priority: -200, restrict: 'A' }; }); }(angular.module('app', []))); function logIt(msg){ var log=angular.element('<li/>').html(msg); window.document.querySelector('.logs ol').appendChild(log[0]); }
section { background-color: #eee; border: 1px solid #aaa; border-radius: 5px; margin-bottom: 10px; padding: 10px; }
<section> <h2>Directive:</h2> <div pr:highest:dad="" pr:zero:dad="" pr:lowest:dad="">Dad <div pr:highest:son="" pr:zero:son="" pr:lowest:son="">Son </div> </div> </section> <section class="logs"> <h2>Log:</h2> <ol></ol> </section>