在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
不更新。 它会在我手动刷新页面时更新。
(路由在$routeProvider
configuration正确,我已经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; } });