我正在关注代码学院angularjs初始设置教程。原因是我可以将它作为我自己的应用程序的指南。我有3个文件MainController.js,app.js和index.html。
app.js
var app = angular.module('myApp', []);
MainController.js
app.controller('MainController', ['$scope', function($scope) {
$scope.title = 'Top Sellers in Books';
}]);
的index.html
<!doctype html>
<html ng-app>
<head>
<title>My App</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
</head>
<body ng-app="myApp">
<div class="main" ng-controller="MainController">
{{ title }}
</div>
<!-- Modules -->
<script src="js/app.js"></script>
<!-- Controllers -->
<script src="js/controllers/MainController.js"></script>
</body>
</html>
在控制台中我收到此错误,我无法打印$ scope.title
我似乎无法弄清楚为什么会产生此错误
答案 0 :(得分:3)
问题在于您的html
代码。您已初始化ng-app
两次,一次在<html>
,一次在<body>
标记中。删除<html>
标记中的一个。您的html代码应如下所示,
<!doctype html>
<html> <!-- Remove `ng-app` here -->
<head>
<title>My App</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"> </script>
</head>
<body ng-app="myApp">
<div class="main" ng-controller="MainController">
{{ title }}
</div>
<!-- Modules -->
<script src="js/app.js"></script>
<!-- Controllers -->
<script src="js/controllers/MainController.js"></script>
</body>
</html>
答案 1 :(得分:1)
在MainController.js
中,无法了解我相信的应用。
您可以将此添加到MainController.js
文件
var app = angular.module('myApp');
注意:这与app.js
中的内容非常相似,但不同。
// This is the app initialisation, because it includes an array of dependencies
// as the second argument
var app = angular.module('myApp', [])
// This is a way to get your angular app from another file
var app = angular.module('myApp')
答案 2 :(得分:0)
您的代码中存在两个问题:
您的HTML包含两个ng-app
指令,一个在<html>
,一个在<body>
标记中。您只需要一个ng-app
指令。因此,我建议您删除<body>
标记中的一个并更改<html ng-app="myApp">
。
您的MainController.js
位于单独的文件(模块)中,但是您没有定义模块对象,现在它希望在该模块中有app
变量。但是由于app
在该模块中未定义,因此无法加载。
您可以通过在MainController.js
中定义模块对象来解决第二个问题:
var Controllers = angular.module('MainControllers', []);
Controllers.controller('MainController', ['$scope', function($scope) {
$scope.title = 'Top Sellers in Books';
}]);
然后,您可以在myApp
的{{1}}中将此控制器作为依赖项注入:
app.js
或者您可以将var app = angular.module('myApp', ['MainControllers']);
模块的定义从MainController
移到MainController.js
,并将其用作代码中当前的模块。像这样:
app.js
然后从var app = angular.module('myApp', []);
app.controller('MainController', ['$scope', function($scope) {
$scope.title = 'Top Sellers in Books';
}]);
删除加载MainController.js
的行。