title: Call method in directive controller from other controller
body: <p>I have a directive that has its own controller. See the below code:</p>
  
  <pre><code>var popdown = angular.module('xModules',[]);
  
  popdown.directive('popdown', function () {
      var PopdownController = function ($scope) {
          this.scope = $scope;
      }
  
      PopdownController.prototype = {
          show:function (message, type) {
              this.scope.message = message;
              this.scope.type = type;
          },
  
          hide:function () {
              this.scope.message = '';
              this.scope.type = '';
          }
      }
  
      var linkFn = function (scope, lElement, attrs, controller) {
  
      };
  
      return {
          controller: PopdownController,
          link: linkFn,
          replace: true,
          templateUrl: './partials/modules/popdown.html'
      }
  
  });
  </code></pre>
  
  <p>This is meant to be a notification system for errors/notifications/warnings. What I want to do is from another controller (not a directive one) to call the function <code>show</code> on this controller. And when I do that, I would also want my link function to detect that some properties changed and perform some animations.</p>
  
  <p>Here is some code to exemplify what I'm asking for:</p>
  
  <pre><code>var app = angular.module('app', ['RestService']);
  
  app.controller('IndexController', function($scope, RestService) {
      var result = RestService.query();
  
      if(result.error) {
          popdown.notify(error.message, 'error');
      }
  });
  </code></pre>
  
  <p>So when calling <code>show</code> on the <code>popdown</code> directive controller, the link function should also be triggered and perform an animation. How could I achieve that?</p>