title: Angular ng show does not update while the scope does
body: <p>I am setting up a <code>&lt;button&gt;</code> that is supposed to open a chat window. </p>
  
  <p>the chat window has a <code>ng-show</code> depending on <code>scope.openChat</code> which is <code>false</code> to start.
  When I clicked the button I update scope.openChat to true and use <code>$scope.apply</code>. 
  The scope seems to have updated but the <code>ng-show</code> does not do anything. </p>
  
  <p>here is the html</p>
  
  <pre><code>&lt;div ng-controller="MessagesCtrl"&gt;
      &lt;button start-chat&gt;Send Messages&lt;/button&gt;
  &lt;/div&gt;
  </code></pre>
  
  <p>and </p>
  
  <pre><code>&lt;div ng-show="openChat" ng-controller="MessagesCtrl"&gt;
      &lt;div&gt;CHAT WINDOW
      &lt;/div&gt;
  &lt;/div&gt;
  </code></pre>
  
  <p>here is the controller: </p>
  
  <pre><code>app.controller("MessagesCtrl", function MessagesCtrl($scope,Auth) {
      $scope.openChat = false;
      $scope.message = { recipient : undefined, sender: undefined, text:'text'};
  });
  </code></pre>
  
  <p>Here is the directive for the button:</p>
  
  <pre><code>'use strict';
  app.directive('startChat',[ 'Post', 'Auth', function (Post, Auth) {
      return {
          restrict: 'A',
          replace: true,
          bindToController: true,
          controller: 'MessagesCtrl',
          link: function(scope, element, attrs) {
              element.bind('click', function() {
                  scope.$apply(function() {
                      scope.openChat = true;
                      scope.message.recipient = scope.profile.$id;
                      scope.message.sender = Auth.resolveUser().uid;
                  });
              });
          }
      }
  }]);
  </code></pre>
  
  <p>thank you </p>