基本的 AngularJs 无法路由到不同的页面
Posted
技术标签:
【中文标题】基本的 AngularJs 无法路由到不同的页面【英文标题】:Basic AngularJs not able to route to different page 【发布时间】:2015-02-14 19:12:37 【问题描述】:对编程并不陌生。但我是 angularjs 的新手。所以这可能是一个愚蠢的问题..
我一直在学习教程...但由于某种原因页面路由不起作用。
我在顶部有一个导航栏,主页、关于、联系方式等。典型的东西。
我希望能够点击“关于”并被路由到同一页面上的 about.html 文件。
什么都没有出现! index.html 位于部分文件中。请注意,我是 Angular 的新手,我已按照说明进行操作。我的服务器工作正常。导航栏看起来不错,但链接不正确。
这是 index.html 的代码。谢谢
<!-- define angular app -->
<html ng-app="financeApp">
<head>
<!-- SCROLLS -->
<!-- load bootstrap and fontawesome via CDN -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css" />
<!-- SPELLS -->
<script src="js/angular.min.js"></script>
<script src="js/angular-route.js"></script>
<script src="js/angular-route.min.js"></script>
<script src="script.js"></script>
</head>
<!-- HEADER AND NAVBAR -->
<header>
<div class="wrap">
<!-- logo -->
<a href="#!"><img class="logo" src="img/logo.png" /></a>
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/"></a>
</div>
<ul class="nav navbar-nav navbar-right">
<li><a href="#"><i class="fa fa-home"></i> Home</a></li>
<li><a href="#about"><i class="fa fa-shield"></i> About</a></li>
<li><a href="#contact"><i class="fa fa-comment"></i> Contact</a></li>
</ul>
</div>
</nav>
</header>
<!-- define angular controller -->
<div class="main" ng-controller="mainController">
<!-- MAIN CONTENT AND INJECTED VIEWS -->
<div id="main">
<div ng-view> </div>
<!-- angular templating -->
<!-- this is where content will be injected -->
</div>
</body>
</html>
这是 script.js 的代码
// create the module and name it financeApp
// also include ngRoute for all our routing needs
var financeApp = angular.module('financeApp', ['ngRoute']);
// configure our routes
financeApp.config(function($routeProvider)
$routeProvider
// route for the home page
.when('#',
templateUrl : 'partials/index.html',
controller : 'mainController'
)
// route for the about page
.when('#about',
templateUrl : 'partials/about.html',
controller : 'aboutController'
)
// route for the contact page
.when('#contact',
templateUrl : 'partials/contact.html',
controller : 'contactController'
);
);
// create the controller and inject Angular's $scope
financeApp.controller('mainController', function($scope)
// create a message to display in our view
$scope.message = 'Everyone come and see how good I look!';
);
financeApp.controller('aboutController', function($scope)
$scope.message = 'Look! I am an about page.';
);
financeApp.controller('contactController', function($scope)
$scope.message = 'Contact us! JK. This is just a demo.';
);
【问题讨论】:
请将以下内容应该适合您。 您需要创建 partials/main.html
INDEX.HTML
<!DOCTYPE HTML>
<html ng-app="financeApp">
<head>
<meta charset="utf-8">
<!-- CSS -->
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css" />
</head>
<!-- HEADER AND NAVBAR -->
<header>
<div class="wrap">
<!-- logo -->
<!-- <a href="#!"><img class="logo" src="img/logo.png" /></a> -->
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#/"></a>
</div>
<ul class="nav navbar-nav navbar-right">
<li><a href="#/"><i class="fa fa-home"></i> Home</a></li>
<li><a href="#/about"><i class="fa fa-shield"></i> About</a></li>
<li><a href="#/contact"><i class="fa fa-comment"></i> Contact</a></li>
</ul>
</div>
</nav>
</div>
</header>
<body>
<div class="main" ng-controller="mainController">
<!-- MAIN CONTENT AND INJECTED VIEWS -->
<div id="main">
<div ng-view></div>
<!-- angular templating -->
<!-- this is where content will be injected -->
</div>
</div>
<!-- App JS -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular-route.min.js"></script>
<script src="js/script.js"></script>
</body>
</html>
SCRIPT.JS
var financeApp = angular.module('financeApp', ['ngRoute']);
// configure our routes
financeApp.config(function($routeProvider)
$routeProvider
// route for the home page
.when('/',
templateUrl : 'partials/main.html',
controller : 'mainController'
)
// route for the about page
.when('/about',
templateUrl : 'partials/about.html',
controller : 'aboutController'
)
// route for the contact page
.when('/contact',
templateUrl : 'partials/contact.html',
controller : 'contactController'
)
.otherwise(
redirectTo: '/'
)
);
// create the controller and inject Angular's $scope
financeApp.controller('mainController', function($scope)
// create a message to display in our view
$scope.message = 'Everyone come and see how good I look!';
);
financeApp.controller('aboutController', function($scope)
$scope.message = 'Look! I am an about page.';
);
financeApp.controller('contactController', function($scope)
$scope.message = 'Contact us! JK. This is just a demo.';
);
【讨论】:
奇怪的是......似乎不再起作用了。链接现在无法点击。 奇怪的是......似乎不再起作用了。链接现在无法点击,页面不断崩溃。真的很奇怪,因为你的建议一开始就奏效了! 代码已更新。不要忘记添加新的部分 main.html 谢谢,但我有。恐怕页面仍然崩溃并且链接不可点击。【参考方案2】:我猜你遵循了this 教程,至少它解释了你需要的一切。
可能的错误可能是:
-
错误的文件夹名称 -> 再次检查模板 URL 是否与您的文件系统匹配
模板文件中的错误
如果您从控制台向我们提供一些错误消息,我们可以为您提供更好的帮助。
【讨论】:
您好,非常感谢。如何查看错误消息?我正在通过 SSH 连接到 Ubuntu 服务器。我所有的编辑都是在 ssh 上的 pico 上完成的。 我不知道您使用的是哪个浏览器。转到您的页面,如果您使用的是 Firefox,请按 CMD+ALT+K,如果您使用的是 chrome,则取决于您的操作系统。在 Windows 上按 CTRL+SHIFT+J,在 MAC 上按 CMD+ALT+J。 Web 控制台显示不同的内容,例如日志消息和错误。这个FF Wiki Page 更详细地解释了它。 这里是错误。 SyntaxError: 语法错误 angular.min.js:1 TypeError: angular is undefined angular-route.js:24 GET advice.local/script.js [HTTP/1.1 404 Not Found 2ms] TypeError: e is undefined angular-route.min.js:10未声明 HTML 文档的字符编码。如果文档包含 US-ASCII 范围之外的字符,则文档将在某些浏览器配置中呈现乱码。页面的字符编码必须在文档或传输协议中声明。 ...您的 js 文件夹中有 angular 或 angular-route js 模块吗?尝试将文件/文件夹结构的转储添加到问题中 您似乎没有在 angular-route.js 之前包含 angular.js。你的 index.html 的头部有这三行吗?<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular-route.js"></script> <script src="script.js"></script>
以上是关于基本的 AngularJs 无法路由到不同的页面的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS - 登录后路由到不同 ng-app 模块的另一个页面