AngularJS $ http.delete和$ window.location.reload()

我有一个有趣的问题,$ http.delete()和$ window.location.reload()函数。 基本上我调用了一个delete方法,该方法依次调用$ http.delete()调用 – 使用REST API接口 – 从数据库(mongoDB)中删除数据。 原因不明这是发生了什么事情:

  • 在数据库中删除成功
    • 这被validation为数据不再在数据库中
    • 也使用Chrome DevTools进行监控,显示状态:200
  • $ window.location.reload()被调用,没有任何反应
    • Chrome开发者工具显示一个到域的根目录的GET调用,但状态是“未决”

页面没有超时,基本上一直在加载和加载和加载。 一旦我点击刷新/ CTRL-F5一切恢复正常,我可以看到我的项目已被删除。

我的代码摘录如下:

app.js

angular.module('contacts', ['ngRoute', 'contacts.factory', 'contacts.filters', 'ui.bootstrap']). config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { $routeProvider. when('/', { templateUrl: '/p/list', controller: ListCtrl, }). otherwise({ redirectTo: '/' }); $locationProvider.html5Mode(true); }]); 

controllers.js

 function ListCtrl($scope, $modal, contactFactory) { //code removed $scope.delete = function(c) { var id = c._id; var modalInstance = $modal.open({ templateUrl: 'deleteContactModal', controller: deleteContactModalCtrl, resolve: { contact: function() { return contactFactory.getContact(id); } } }); } } var deleteContactModalCtrl = function($scope, $route, $modalInstance, $window, contact, contactFactory) { $scope.name = contact.data.contact.name; $scope.deleteContact = function() { contactFactory.deleteContact(contact.data.contact._id).success(function() { //have also tried: $window.location.reload(true); //as well as window.location.href('/') - didn't work either $modalInstance.close($window.location.reload()); }); }; } 

factory.js

 angular.module("contacts.factory", []). factory('contactFactory', function($http){ return { //code removed deleteContact: function(id) { return $http.delete('/api/contact/' + id); } } }); 

后端 – app.js

 //usual express setup app.delete('/api/contact/:id', api.delete); //delete contact 

后端 – api.js

 //code removed exports.delete = function (req, res) { var id = req.params.id; if (id) { ContactModel.findById(id, function (err, contact) { contact.remove(function (err) { if (!err) { res.json(true); } else { res.json(false) console.log(err); } }); }); } }; 

目前我甚至不确定这个问题是与前端还是后端有关。 如前所述 – 后端部分工作正常 – 从数据库中删除数据。

好的解决scheme似乎如下:

 $scope.deleteContact = function() { contactFactory.deleteContact(contact.data.contact._id).success(function() { $modalInstance.close(); contactFactory.getContacts().success(function(contacts) { return $scope.contacts = contacts; }); $window.location.reload(); }); }; 

我需要在删除方法期间再次从工厂获取getContacts()方法。