【发布时间】:2026-02-10 20:00:01
【问题描述】:
我正在学习 AngularJS,到目前为止,我已经有了一个框架应用程序的开始,它有一个主索引页面和两个模板:一个登录页面和一个主页,它们有非常简单的控制器。我还没有深入到骨架中,所以我试图完成的工作比说身份验证要基本得多。
我之所以这样编码,是为了尝试应用我在学习 AngularJS 时读到的一个概念;这是通过在其自己的 JS 文件中为每个模板(或部分模板)提供其自己的控制器来模块化您的代码。我相信这是我应该尽早应用的最佳实践,因为这可能会在未来大幅增长。这就是为什么我不把我的控制器放在一个文件中的原因,我知道这个文件效果很好。
现在事不宜迟,请查看以下代码以作为我目前所处位置的参考:
index.html
<!DOCTYPE html>
<html ng-app="MyApp">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>MyApp</title>
<link rel="stylesheet" href="assets/css/normalize.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" href="assets/css/animate.css">
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css" rel="stylesheet">
</head>
<body>
<div ng-view>
<!-- loaded view here -->
</div>
<!-- JS imports -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.6.0/lodash.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.15/angular-route.js"></script>
<script src="assets/js/app.js"></script>
</body>
</html>
app.js
angular.module('MyApp', [
'ngRoute'
])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when("/login", {
templateUrl: 'assets/partials/login.html',
controller: 'LoginCtrl'
})
.when("/home", {
templateUrl: 'assets/partials/home.html',
controller: 'HomeCtrl'
})
.otherwise({
redirectTo: '/login'
});
}]);
login.html, home.html
<div class="container-fluid text-center">
<h2>{{pageTitle}}</h2>
</div>
login.js
angular.module('MyApp')
.controller('LoginCtrl', ['$scope', function($scope) {
$scope.pageTitle = "Hello! Sign In";
}]);
home.js
angular.module('MyApp')
.controller('HomeCtrl', ['$scope', function ($scope) {
$scope.pageTitle = "Welcome to the Home Page!";
}]);
那么我正在解决的问题是什么? {{pageTitle}} 是加载视图时显示的内容,而不是通过范围传入的实际值。请让我知道这里出了什么问题,我愿意接受有关如何改进我的代码的所有建议,非常感谢所有帮助!
【问题讨论】:
-
您没有在 HTML 中同时引用 login.js 和 home.js。添加对应的脚本标签。
-
没关系。它发生了。大问题总是出自小错误。
标签: angularjs angularjs-scope angularjs-routing angularjs-controller