我将app.js和controller.js文件存储在项目的js文件夹中,这是每个
的片段app.js
var myApp = angular.module('myApp', ['ngRoute','RouteControllers']);
myApp.config(["$routeProvider",function ($routeProvider) {
$routeProvider
.when("/", {
templateUrl: 'templates/home.html',
controller: 'HomeController'
}).
when("/about", {
templateUrl: 'templates/biography.html',
controller: 'BiographyController'
});
}]);
controller.js
angular.module('RouteControllers', [])
.controller('HomeController', function($scope) {
$scope.title = "Welcome to Website!"
console.log("HomeController: I was instantiated!")
})
.controller('BiographyController', function($scope) {
$scope.title = "About"
});
然后我有我的index.html文件,基础知识:
<base href="/">
<link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css" />
<link rel="stylesheet" href="css/style.css">
<body ng-app="myApp">
<a href="/">Home </a>
<a href="/about"> About </a>
<div ng-view> </div>
<script src ="bower_components/angular/angular.min.js"></script>
<script src="bower_components/angular-route/angular-route.min.js"></script>
<script src="bower_components/jquery/dist/jquery.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="js/app.js"></script>
<script src="js/controller.js"></script>
</html>
我的问题是,当我加载页面时,显示主页中的文本(应该如此),但是当我点击“关于”时,我会得到以下内容: '找不到页面
在本网站上找不到此指定文件。请检查URL是否有错误,然后重试。 我为什么看到这个? 此页面由Firebase命令行界面生成。要修改它,请编辑项目配置的公共目录中的404.html文件。'
控制台中的错误只是'无法加载资源:服务器响应状态为404()'
我一直在寻找问题所在,但找不到一个,点击“关于”时的网址是“http://localhost:5000/about”。
答案 0 :(得分:0)
您需要将#
添加到您的主播
<a href="#/">Home</a>
<a href="#/about">About</a>
这将使其有效。此外,您可以选择使用$location
服务
.controller('HomeController', ['$scope', '$location', function($scope, $location) {
$scope.title = "Welcome to Website!";
console.log("HomeController: I was instantiated!");
$scope.goAbout = function() {
$location.path('/about');
};
}])
现在,您可以在模板中使用goAbout
功能
<div>
<h1>{{title}}</h1>
<button ng-click="goAbout()">About us</button>
</div>
但是,如果你想利用HTML5 mode
,摆脱#
并拥有更漂亮的网址,至少在支持HTML5 mode
的浏览器中,那么你需要代码中的一些更新
myApp.config(["$routeProvider", '$locationProvider',
function ($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
......
注入$locationProvider
服务并设置$locationProvider.html5Mode(true);
如果您不需要<base href="/">
标记,请使用此类对象
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
现在,您的链接需要更改
<a href="/">Home</a>
<a href="about">About</a>
你会有更漂亮的网址。请注意HTML5 mode
may need some server side configuration,以便将所有导航重定向到您的index
页面
希望有所帮助