title: Changing the data in the service doesn't work properly with $watch
body: <p>I have the following service in angular:</p>
  
  <pre><code>myModule.factory("myService", function(){
     return {
        data: [],
  
        updateData: function(data){
           this.data = data;
        }
     }
  });
  </code></pre>
  
  <p>I also have a directive and a controller which uses the service:</p>
  
  <pre><code>myModule.controller("myController", ['$scope', 'myService', function($scope, myService){
      this.directiveOptions = {data: myService.data, someOtherData: null};
  });
  
   myModule.directive("myDirective", function(){
       return {
              scope: {
                  options: "="
              },
              link: function(scope, element, attrs){
                  scope.$watch('options.data', function(newData){
                      alert("data was changed");
                  });
              }
          };
  });
  </code></pre>
  
  <p>HTML:</p>
  
  <pre><code>&lt;div ng-controller="myController as ctrl"&gt;
      &lt;my-directive options="ctrl.directiveOptions"&gt;&lt;/my-directive&gt;
  &lt;/div&gt;
  </code></pre>
  
  <p>In some point in the application I call "updateData" (of the service). The watch is being called but the newData I'm getting is the old data.</p>
  
  <p>I can think of an explanation why the watch should not work at all, but can't explain its current behavior. Any ideas?</p>