繁体   English   中英

角度$ http.get()在$ http.post之后不向服务器发送信号

[英]angular $http.get() not sending signal to server after $http.post

一周前,我开始使用angular,我一直在努力解决这个问题。 我有一个包装$http的服务,因为多个控制器调用了相同的url。 帖子的服务器上有一个页面,其中包含很多业务逻辑,所以我想调用$route.reload() 这似乎可行,因为在vm.saveItem()之后控制器被重新初始化,但是$http.get()从未将信号发送到服务器以获取新数据。 我究竟做错了什么?

  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;
        })
    }
  }
})();

尝试将动态参数添加到您的请求中:

 $http({
      url: baseUrl + "/" + itemName + "/locators",
      method: "GET",
      cache: false,
      params: {
         r: Math.random().toString(16).substr(2)
      }
    });

如果问题已解决,则需要寻找HTTP缓存策略。
Google提供必要的服务器端标头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM