【发布时间】:2016-05-14 03:53:43
【问题描述】:
我是 Angular 新手,很难让 ngRoute 获取我的模板文件。
这是我的 index.html:
<html ng-app="myApp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular-route.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular-animate.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<script src="app.js"></script>
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
<link href='https://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/main.css" />
</head>
<nav>
<div>
<ul>
<li><a href="#/home">home</a></li>
</ul>
</div>
</nav>
<body>
<div ng-view>
</div>
</body>
</html>
这是我的 app.js:
var myApp = angular.module('myApp', ['ngRoute']);
myApp.controller('MainCtrl', function($scope) {
$scope.message = 'Hello World';
});
myApp.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/home', {
templateUrl: 'pages/home.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/home'
});
}]);
这是我的页面/home.html:
<div ng-controller="MainCtrl">
<p>Test</p>
<p>{{ message }}</p>
</div>
我可以看到它正在将 #/ 附加到根 url,所以这可能是部分工作;但是,它似乎没有在“pages/home.html”处呈现模板。
我已经检查了 cdn url 以确保没有任何版本不一致,但事实并非如此。
这几乎是我的第一个 Angular 项目,我刚刚离开文档,但肯定有一些我没有看到的东西。来自其他服务器端项目,缺乏堆栈跟踪让我很生气哈哈。
我在上面的代码中是否缺少某些东西,这会阻止我的模板在“/”中呈现?
谢谢!
【问题讨论】:
-
去掉#,需要使用html5Mode(true)或者也可以使用.htaccess来实现。
-
你能让它工作吗?
-
我仍然无法正常工作。 index.html 重定向到 /index.html#/ 并保持空白。当我修改为使用 html5Mode(true);
-
尝试将您的 jquery-min.js 包含在 angular js 脚本之上。您在控制台中遇到任何错误吗?
-
@chrisl0lz 你不需要添加任何位置服务和 html5Mode 路由。当您想删除 URL 中的 # 时,您只需要 html5mode 路由。你的问题不一样。看看我的解决方案
标签: javascript angularjs ngroute