事情是这样的:我正在尝试学习AngularJS,到目前为止,我正在做一件非常简单的事情。
应用.js
(function () {
'use strict';
angular.module('vApp', []);
})();
列表用户控制器.js
(function () {
'use strict';
var app= angular.module('vApp');
app.controller('Hello', ['$scope', function ($scope) {
$scope.id = 'ID';
$scope.content = 'some stuff';
}]);
}());
你好.jsp
<!DOCTYPE html>
<html ng-app="vApp">
<head>
<title>Spring 3 MVC Series - Contact Manager</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
<script src="WEB-INF/angular/app.js"></script>
<script src="WEB-INF/angular/ListUsersController.js"></script>
</head>
<body >
<div ng-controller="Hello">
<h1>Supposed to be cool</h1>
<p>The ID is {{id}}</p>
<p>The content is {{content}}</p>
</div>
</body>
</html>
似乎我在浏览器中得到这个时在某处犯了一个完全愚蠢的错误:
应该很酷
ID 是 {{id}}
内容是{{内容}}
无论我尝试什么以及如何更改代码,都不起作用。知道我做错了什么吗?任何提示将不胜感激。提前谢谢你。
编辑 由于问题很可能是由找不到脚本文件异常引起的,因此我决定输入我的 Web 应用程序结构,因为这个问题没有任何意义:
-webapp
-WEB-INF
-angular
app.js
ListUsersController.js
-pages
hello.jsp
将代码放在自动执行的函数中是一种非常好的做法,除了你犯了一个小错误。
将最后一个 () 移到函数和其他大括号之外。
(function () {
'use strict';
var app= angular.module('vApp');
app.controller('Hello', ['$scope', function ($scope) {
$scope.id = 'ID';
$scope.content = 'some stuff';
}]);
})();
否则,永远不会调用该函数,并且您的代码对于浏览器来说"不存在"。
我已经完全复制了您的HTML和JS代码以保存在本地。然后我没有使用JSP,只需在浏览器中打开HTML文件,它就可以了!结果很好,如下所示:
Supposed to be cool
The ID is ID
The content is some stuff
我怀疑您没有正确包含JS文件,即:
<script src="WEB-INF/angular/app.js"></script>
<script src="WEB-INF/angular/ListUsersController.js"></script>
请检查它们。
在将应用程序配置为服务器(例如 Apache )之前,您的文件只是本地文件,并且通过绝对路径或相对路径进行定位。但是对于 Web 服务器软件,您需要定义自己的 URL 映射规则。说: http://book.seaside.st/book/advanced/deployment/deployment-apache/serving-files
从哪里得到该语法: - (函数 () { "使用严格";
var app= angular.module('vApp');
..
..
}());
只需删除(函数 () { "使用严格";和最后分别是大括号。
问题是:依赖注入。你必须这样。在你的应用中.js
angular.module('vApp', ['vApp.controller']);
列表用户控制器.js
angular.module('vApp.controller',[])
.controller('Hello', ['$scope', function ($scope) {
$scope.id = 'ID';
$scope.content = 'some stuff';
}]);