title: Why element argument in link function of directive is undefined in $watch?
body: <p>I created a simple directive which triggers focus event on input to show tooltip</p>
  
  <pre><code>.directive('tooltipValidationObserver', ['$timeout', function($timeout) {
      return {
          restrict: 'A',
          require: '?ngModel',
          link: function($scope, element, attrs, ngModel) {
              $scope.$watch(function() { return ngModel.$invalid; }, function(newVal, oldVal) {
                  $timeout(function() {
                      $('#' + attrs.id).trigger('focus');
                  });
              });
          }
      }
  }])
  </code></pre>
  
  <p>It works perfectly if I use attrs.id, but if I want to perform</p>
  
  <pre><code>$(element).trigger('focus')
  </code></pre>
  
  <p>element is undefined, when in link function it's defined on linking phase.. and undefined in watch function.  Why? In watch function I can obtain all available variables (such as $scope, attrs, ngModel) but not the element.. </p>