I started using angular a week ago and I have been banging me head trying to solve this problem. I have a service that wraps $http because multiple controllers call the same url. There is one page that has a lot of business logic on the server on a post so I want to call $route.reload(). It seems to work because after vm.saveItem() the controller is reinitialized, but the $http.get() never sends the signal to the server for the new data. What am I doing wrong?
  myModule.factory("itemRepository", function ($http) {
    var baseUrl = "/api/inventory";
    return {
      getLocations: function (itemName) {
        return $http({
          url: baseUrl + "/" + itemName + "/locators",
          method: "GET",
          cache: false
        });
      },
      addNewLocator: function (itemName, newLocator) {
        return $http.post(baseUrl + "/" + itemName + "/locators", newLocator);
      }
    };
  });
// itemEditorController.js
(function () {
  "use strict";
  angular.module("app-inventoryitems")
    .controller("itemEditorController", itemEditorController);
  function itemEditorController($routeParams, $route, itemRepository) {
    // initialize vars
    var vm = this;
    vm.itemName = $routeParams.itemName;
    vm.errorMessage = "";
    // Models
    vm.items = [];
    vm.isBusy = true;
    vm.newLocator = {};
    vm.newLocator.name = vm.itemName;
    // PROBLEM HERE, does not call server after post new data 
    // and $route.reload() was called
    itemRepository
      .getLocations(vm.itemName)
      .then(function (response) {
        angular.copy(response.data, vm.items);
      }, function (err) {
        vm.errorMessage = "Failed to load batches.";
      })
      .finally(function () {
        vm.isBusy = false;
      });
    vm.saveItem = function () {
      vm.isBusy = true;
      itemRepository.addNewLocator(vm.itemName, vm.newLocator)
        .then(function (response) {
          vm.newLocator = {};
          $route.reload();
        }, function (error) {
          vm.errorMessage = "Failed to save new item.";
        })
        .finally(function () {
          vm.isBusy = false;
        })
    }
  }
})();
 
    