title: What is 'cheaper' performance-wise $broadcast or $watch
body: <p>I have a situation in my application where I need to reload the menu each time the role of the user changes(One user can have roles in several companies).</p>
  
  <p>I was wondering what is the best way to approach this issue.</p>
  
  <p>currently I am doing the following: </p>
  
  <pre><code>app.controller('menuLoadingCtrl', function($location, $scope, authService){
      $scope.model.initialRole = authService.getRole();
      $scope.$watch(function(){return authService.getRole()}, function(val){
          if(val &amp;&amp; val != $scope.model.initialRole){
                  $scope.layout.menuSrc = 'partials/menu.html';
          }
      });
  })
  </code></pre>
  
  <p>Simple redirecting the user to the menu loading view, and from there, back to the menu view once the role is done loading.
  I have this wrapped in a function: </p>
  
  <pre><code> $scope.layout.reloadMenu = function(){
          $scope.layout.menuSrc = 'partials/menuLoading.html';
      }
  </code></pre>
  
  <p>which I call at any scenario at which I would like to reload the menu.</p>
  
  <p>I was wondering if I can make this process more automatic by broadcasting this event from the service on the $rootScope, and then listening to it in the controller.</p>
  
  <p>Any thoughts\advice on this will be greatly appreciated.</p>