我正在尝试启动angular.js项目。这是我的index.html:
<!doctype html>
<html ng-app="myapp">
<head>
<meta charset="utf-8">
<base href="{% url 'app' %}" />
<title>Project</title>
</head>
<body>
<div ng-view>
<p>Loading...</p>
</div>
<script>
var url = function(path) { return '{{ STATIC_URL }}' + path };
</script>
<script src="{{ STATIC_URL }}js/jquery-1.10.1.js"></script>
<script src="{{ STATIC_URL }}js/angular.js"></script>
<script src="{{ STATIC_URL }}js/project/app.js"></script>
<script src="{{ STATIC_URL }}js/project/controllers.js"></script>
</body>
</html>
头上的url 'app'
只打印子路径/ app,例如。这是我的app.js:
'use strict';
var app = angular.module('myapp', []);
app.config(['$routeProvider', function($router) {
$router.when('/', {
templateUrl: url('partials/foo.html'),
controller: controllers.Foo
});
}]);
问题在于,每当我尝试运行它时,都会引发异常:Uncaught Error: No module: myapp
,这与angular-seed的工作方式几乎相同。我在Google和StackOverflow上搜索过,但没有一个答案(one和two)帮助了我。
这是关于我的错误的fiddle(你应该打开浏览器的控制台来查看它)。出了什么问题?
答案 0 :(得分:40)
您的脚本的顺序非常重要,请尝试将其放入<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script>
var app = angular.module('myapp', []);
app.controller('Ctrl', function($scope){
$scope.variable = "Hello";
});
</script>
<body ng-app="myapp">
<div ng-controller="Ctrl">
<p>{{variable}}</p>
</div>
</body>
在这里试试:
答案 1 :(得分:10)
补充AlexCheuk的答案,我意识到我的app.js文件涉及一个闭包:
(function($) {
'use strict';
// all angular.js stuff
)(jQuery);
删除它工作的封闭(不改变亚历克斯所说的订单)!我不知道为什么,但那没关系。
答案 2 :(得分:2)
答案 3 :(得分:0)
在我使用IIFE表示法的情况下,我忘记了自己调用括号。
(function () {
angular.module("adminApp", []);
}() //don't forget self invoke parentheses
);
答案 4 :(得分:0)
我遇到了同样的错误,但我犯了一个愚蠢的错误,我没有在我的jsp页面中包含controller.js文件。 刚刚包括这个:
<script type="text/javascript" src="${pageContext.request.contextPath}/resources/js/controller.js"></script>
并且效果很好。
答案 5 :(得分:-4)
我在运行Yeoman / grunt服务器的同时遇到了类似的问题。 为我修复的是重启grunt服务器。