title: Angular reload resource that is being watched
body: <p>I think this seems like an obvious question, but my brain seems to be a bit fried.</p>
  
  <p>I have a resource</p>
  
  <pre><code>Book = $resource("/books/:id", {id: "@id"});
  book = Book.get(1);
  </code></pre>
  
  <p>I want to refresh the object to get changes from the server.
  I know I can do that by repeating <code>book = Book.get(book.id)</code>, but that would mean that everything on the page that's watching <code>book</code> would temporarily get nulled until the query returned and functions that operate on it might crash.</p>
  
  <p>I want to add a reload method to instances that updates any changed fields once the query returns from the server. My best attempt so far is:</p>
  
  <pre><code>$reload = function() {
      var model = this;
  
      Book.get(model.id, function(data) { // success
        angular.forEach(data, function(value, key) {
            model[key] = value;
        }
      }
  }
  </code></pre>
  
  <p>Two questions
  a) Is this the "angular" way to do it, or is there a more elegant way?
  a) How do I add this $refresh method when defining the resource so that it gets included on every instance created?</p>