我已经如下定义了我的角度模块,并希望按照指南使用VM。不知道我在这里做错了什么,但是它给我控制台错误:
未捕获的错误:无模块:myApp
这是我的代码:
<div ng-controller="Ctrl">
Hello, {{vm.name}}!
</div>
var app = angular.module('myApp');
app.controller('Ctrl', ['$scope', '$http',
function ($scope, $http) {
var vm = this;
vm.name = "John";
}]);
这是我的jsfiddle:
答案 0 :(得分:4)
首先,您在声明模块时需要添加一个空数组(或具有相关性的数组)。如果没有该数组,则将尝试使用名称myApp来获取该模块。
var app = angular.module('myApp', []);
然后,您需要将应用名称添加到视图中的NgApp指令中,否则,角度应用需要启动。
尝试一下
<body ng-app="myApp">
<div ng-controller="Ctrl as vm">
Hello, {{vm.name}}!
</div>
</body>
答案 1 :(得分:3)
创建新模块时,必须将数组作为第二个参数。
var app = angular.module('myApp', []);
否则,它将查找不存在的现有应用程序“ myApp”。
答案 2 :(得分:0)
您似乎正在尝试使用ContollerAs语法。我已经设置了here
您的HTML:
<html>
<head>
<script type="text/javascript" src="https://code.angularjs.org/1.4.0-rc.2/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body ng-app="myApp">
<h1>Hello Plunker!</h1>
<div ng-controller="Ctrl as vm">
Hello, {{vm.name}}!
</div>
</body>
</html>
您的Javascript:
var app = angular.module('myApp', []);
app.controller('Ctrl', function () {
var vm = this;
vm.name = "John";
});
我无法在您的jsfiddle中使用此功能,但我认为这基本上是您使用控制器的HTML中的语法更正,以及此处其他人(包括ng-app,您的javascript)提出的要点模块语法)。
答案 3 :(得分:0)
您没有使用正确的语法来创建应用程序实例。 正确的语法如下
var app = angular.module('myApp',[]);
那么您写的系统税是什么意思?
var app = angular.module('myApp');
这意味着您已经创建了实例,并希望使用它。现在您将了解为什么angularjs引发此错误。因为不是创建新实例,而是查找未创建的实例。
注意:需要附加参数[]来指定 依赖性。这意味着您可以添加现有的angularjs 应用程序。意味着您可以添加依赖性并使用它。
您在下面完成的js文件应该是这样的
var app = angular.module('myApp',[]);
app.controller('Ctrl', ['$scope', '$http',
function ($scope, $http) {
var vm = this;
vm.name = "John";
}]);