在Angular中,如何将$ location.pathredirect为$ http.post成功callback

我试图通过发送一个简单的身份validation服务的PHP文件,我需要它加载的主页部分在我的ng-view时,它的成功。

这是我试过的:

 function loginCtrl($scope, $http, $location){ $http.post(url,data).success(function(data){ $location.path('/home'); }); } 

结果在我的url更改,但ng-view不更新。 它会在我手动刷新页面时更新。

(路由在$routeProviderconfiguration正确,我已经testingredirect这个独立的function不作为callback,它的工作原理)

我也尝试将$location.path('/home')定义为函数,然后在callback函数中调用它仍然不起作用。

我做了一些研究,发现一些文章说明使用另一个第三方插件时,我只加载angular.js

对某些学习材料的任何见解或指示将会很好

以下是本文中的changeLocation示例:http: //www.yearofmoo.com/2012/10/more-angularjs-magic-to-supercharge-your-webapp.html#apply-digest-and-phase

 //be sure to inject $scope and $location var changeLocation = function(url, forceReload) { $scope = $scope || angular.element(document).scope(); if(forceReload || $scope.$$phase) { window.location = url; } else { //only use this if you want to replace the history stack //$location.path(url).replace(); //this this if you want to change the URL and add it to the history stack $location.path(url); $scope.$apply(); } }; 

官方指南中有一个简单的答案:

它不做什么?

浏览器URL更改时,不会导致整个页面重新加载。 要在更改URL后重新加载页面,请使用较低级别的API $ window.location.href。

来源: https : //docs.angularjs.org/guide/$location

我正在做下面的页面redirect(从login到主页)。 我必须将用户对象也传递给主页。 所以,我正在使用Windows本地存储。

  $http({ url:'/login/user', method : 'POST', headers: { 'Content-Type': 'application/json' }, data: userData }).success(function(loginDetails){ $scope.updLoginDetails = loginDetails; if($scope.updLoginDetails.successful == true) { loginDetails.custId = $scope.updLoginDetails.customerDetails.cust_ID; loginDetails.userName = $scope.updLoginDetails.customerDetails.cust_NM; window.localStorage.setItem("loginDetails", JSON.stringify(loginDetails)); $window.location='/login/homepage'; } else alert('No access available.'); }).error(function(err,status){ alert('No access available.'); }); 

它为我工作。

而不是使用success ,我改变它, then它的工作。

这里是代码:

 lgrg.controller('login', function($scope, $window, $http) { $scope.loginUser = {}; $scope.submitForm = function() { $scope.errorInfo = null $http({ method : 'POST', url : '/login', headers : {'Content-Type': 'application/json'} data: $scope.loginUser }).then(function(data) { if (!data.status) { $scope.errorInfo = data.info } else { //page jump $window.location.href = '/admin'; } }); }; }); 

使用:$ window.location.href ='/Home.html';

这是非常简单的代码..但很难罚款..

 detailsApp.controller("SchoolCtrl", function ($scope, $location) { $scope.addSchool = function () { location.href='/ManageSchool/TeacherProfile?ID=' + $scope.TeacherID; } });