From what I understand it only runs once before the page is rendered. But is there ever a case where it runs after the page has been rendered?
I tried testing a few things with this plnkr:
angular
  .module('app', [])
  .directive('test', function($http) {
    return {
      restrict: 'E',
      template: '<input />',
      link: function(scope, el, attrs) {
        var input = angular.element(el[0].children[0]);
        input.on('change', function() {
          console.log('change event');
          scope.$apply(function() {
            console.log('digest cycle');
          });
        });
        input.on('keyup', function() {
          console.log('keyup event');
          var root = 'http://jsonplaceholder.typicode.com';
          $http.get(root+'/users')
            .success(function() {
              console.log('http request successful');
            })
            .error(function() {
              console.log('http request error');
            });
        });
        console.log('link function run');
      }
    };
  });
- Does typing in the input field cause the link function to run?
- Do event listeners cause the link function to run?
- Do http requests (made with $http?) cause the link function to run?
- Do digest cycles cause the link function to run?
The answer to all of these questions seem to be "no".
 
     
     
    