我正在使用AngularJS构建一个Web单页面应用程序。我需要在没有http请求的客户端浏览器中单击链接更改URI。
http://example.com/ --->它显示我的单页应用程序并单击特定链接我需要的URL是http://example.com/about但没有发送http请求并显示隐藏的div。
答案 0 :(得分:1)
我不知道你究竟想做什么,但如果你只想做一个http请求,你可以使用angular ui router之类的东西
$stateProvider
.state('main', {
url: "/",
templateUrl: "main.html"
})
.state('about', {
url: "/about",
templateUrl: "main.html",
controller: function($scope) {
$scope.showDiv = "true";
}
})
这样你可以切换状态,因为你需要的所有东西都已加载,所以不再有任何东西被加载。或者您也可以使用parameters。
但是为什么有一个额外的请求是如此糟糕?这将是一件有趣的事情! :)
编辑:使用$ location 的简单方法 (https://docs.angularjs.org/guide/的$ location)
的index.html:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example</title>
<base href="/">
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.1/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-app="html5-mode">
<div ng-controller="LocationController">
<button ng-click="changeUrl()">Change url</button>
</div>
</body>
</html>
app.js:
angular.module('html5-mode', [])
.controller("LocationController", function ($scope, $location) {
$scope.$location = {};
$scope.changeUrl = function () {
// https://docs.angularjs.org/guide/$location
console.log("The current path: " + $location.path());
console.log("Changing url...");
$location.path('/newValue')
};
})
.config(function ($locationProvider) {
$locationProvider.html5Mode(true).hashPrefix('!');
})
请务必将basePath设置为正确。
答案 1 :(得分:0)