Html 在AngularJS中如何在页面刷新后保留路径和查询字符串参数
我有一个AngularJS应用程序,它使用$routeProvider定义了以下路由Html 在AngularJS中如何在页面刷新后保留路径和查询字符串参数,html,angularjs,Html,Angularjs,我有一个AngularJS应用程序,它使用$routeProvider定义了以下路由 $routeProvider .when('/users/edit', { templateUrl: 'components/user-management/view-users/view.html' controller: 'viewUsersCtrl' }) .when('
$routeProvider
.when('/users/edit', {
templateUrl: 'components/user-management/view-users/view.html'
controller: 'viewUsersCtrl'
})
.when('/users/edit/:id', {
templateUrl: 'components/user-management/edit-user/view.html'
controller: 'editUserCtrl'
reloadOnSearch: false
})
.otherwise {redirectTo: '/'}
在浏览器中请求/放置以下URL时
webapp/#/users/edit/3
它检索用户的详细信息,但在您点击浏览器的刷新按钮后,以下URL将接管
webapp/#/users/edit/:id
这将导致没有用户
如何保留路径/查询字符串变量,以便在单击刷新按钮时保持不变 最好使用$stateProvider而不是$routeProvider:
(function () {
var app = angular.module("myApp", ["ui.router"]);
app.config(function($stateProvider) {
var users = {
name: 'users',
url: '/users',
templateUrl: 'users.html'
},
viewUsers = {
name: 'view-user',
url: '/edit',
parent: users,
templateUrl: 'view-users.html'
//controller: 'viewUsersCtrl'
},
editUser = {
name: 'edit-user',
url: '/:id',
parent: viewUsers,
templateUrl: 'edit-user.html'
//controller: 'eidtUsersCtrl'
};
$stateProvider.state(users);
$stateProvider.state(viewUsers);
$stateProvider.state(editUser);
});
})();
index.html:
<!DOCTYPE html>
<html>
<head>
<title>UI-ROUTER</title>
<meta charset="UTF-8">
<script src="js/angular.min.js"></script>
<script src="js/angular-ui-router.js"></script>
<script src="js/app.js"></script>
</head>
<body ng-app="myApp">
<a href="#" ui-sref="users">Users</a>
<div ui-view></div>
</body>
</html>
<h3>users</h3>
<div ui-view></div>
<h3>VIEW USER</h3>
<div ui-view></div>
<h3>EDIT USER</h3>
用户界面路由器
users.html:
<!DOCTYPE html>
<html>
<head>
<title>UI-ROUTER</title>
<meta charset="UTF-8">
<script src="js/angular.min.js"></script>
<script src="js/angular-ui-router.js"></script>
<script src="js/app.js"></script>
</head>
<body ng-app="myApp">
<a href="#" ui-sref="users">Users</a>
<div ui-view></div>
</body>
</html>
<h3>users</h3>
<div ui-view></div>
<h3>VIEW USER</h3>
<div ui-view></div>
<h3>EDIT USER</h3>
用户
查看用户.html:
<!DOCTYPE html>
<html>
<head>
<title>UI-ROUTER</title>
<meta charset="UTF-8">
<script src="js/angular.min.js"></script>
<script src="js/angular-ui-router.js"></script>
<script src="js/app.js"></script>
</head>
<body ng-app="myApp">
<a href="#" ui-sref="users">Users</a>
<div ui-view></div>
</body>
</html>
<h3>users</h3>
<div ui-view></div>
<h3>VIEW USER</h3>
<div ui-view></div>
<h3>EDIT USER</h3>
查看用户
编辑user.html:
<!DOCTYPE html>
<html>
<head>
<title>UI-ROUTER</title>
<meta charset="UTF-8">
<script src="js/angular.min.js"></script>
<script src="js/angular-ui-router.js"></script>
<script src="js/app.js"></script>
</head>
<body ng-app="myApp">
<a href="#" ui-sref="users">Users</a>
<div ui-view></div>
</body>
</html>
<h3>users</h3>
<div ui-view></div>
<h3>VIEW USER</h3>
<div ui-view></div>
<h3>EDIT USER</h3>
编辑用户
我已经在angular.run方法中实现了它:
$routeScope.$on("$routeChangeStart", function(e, next, current) {
$rootScope.queryString = $location.search()
})
$routeScope.$on("$routeChangeSuccess", function(e, next, current) {
$location.search($rootScope.queryString);
})
你能告诉我如何使用$stateProvider解决我的问题吗?也许你能展示一些代码?谢谢。我更新了响应,向您展示了如何使用$stateProvider完成这项工作谢谢您的示例,但这不会在页面刷新时保留查询字符串或路径变量。