即使控制器可用,角度JS仍会出现错误
Angular JS thowing error even though controller is available
我是Angular JS的新手,我正在尝试一些例子。。。但当我尝试加载我的应用程序时,我遇到了一个非常奇怪的异常。。。
这是我的角JS代码:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script>
<script src="JS/Controllers.js"></script>
<body ng-app="myapp">
<div ng-controller="HelloController">
<h2>Hello {{helloTo.title}} !</h2>
</div>
<div ng-controller="MyController" >
<span ng-show="myData.showIt"></span>
<span ng-hide="myData.showIt"></span>
</div>
</body>
这是我的控制器代码:
angular.module("myapp", []).controller("HelloController", function($scope) {
$scope.helloTo = {};
$scope.helloTo.title = "Test";
} );
angular.module("myapp1", []).controller("MyController", function($scope) {
$scope.myData = {};
$scope.myData.showIt = true;
});
firebug记录的错误:错误:[ng:areq]http://errors.angularjs.org/1.2.5/ng/areq?p0=MyController&p1=不是%20a%20函数%2C%20得到%20未定义https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js83号线
我使用的是angular js 1.2.5版本…
您正在创建两个不同的角度模块,每个模块有一个控制器,而不是一个带有两个不同控制器的单个模块
angular.module("myapp", [])
.controller("HelloController", function($scope) {
// ...
})
.controller("MyController", function($scope) {
// ...
});
或者这个:
var myApp = angular.module("myapp", []);
myApp.controller("HelloController", function($scope) {
// ...
});
myApp.controller("MyController", function($scope) {
// ...
});
您有两个模块,myapp和myapp2。myapp2有一个控制器MyController,您正试图在myapp模块的范围内使用它,这是不可能的。
您可以在myapp模块中定义MyController。http://jsfiddle.net/g35tpy5q/1/
var myapp=angular.module("myapp", []);
myapp.controller("HelloController", function($scope) {
$scope.helloTo = {};
$scope.helloTo.title = "Test";
} );
myapp.controller("MyController", function($scope) {
$scope.myData = {};
$scope.myData.showIt = true;
});
或者在myapp模块中注入myapp2模块http://jsfiddle.net/g35tpy5q/2/
angular.module("myapp2", []).controller("MyController", function($scope) {
$scope.myData = {};
$scope.myData.showIt = true;
});
angular.module("myapp", ["myapp2"]).controller("HelloController", function($scope) {
$scope.helloTo = {};
$scope.helloTo.title = "Test";
} );
这里有两个问题。
第一,您定义了两个不同的模块:"myapp"answers"myapp1"。也许这只是一个拼写错误,而你的意思是让它们是一样的。
然后,第二个问题是,当您第二次使用[]
时,您正在重新定义您的模块:
angular.module("myapp", [])
这是一个模块设置器。
相反,使用不带[]
:的模块getter
angular.module("myapp").controller("MyController", ...)
以下内容将起作用。你必须记住的是,每次你定义一个新的angular.module
,如果你放了angular.module('myapp', [])
,你就是在定义一个不知道任何其他模块的新空间。如果随后执行angular.module('myapp').controller()
,则会将控制器连接到原始模块。因此在其范围内。
在定义控制器时,请注意[]
的调试。[]
用于依赖注入,但就angular.module
而言,它定义了一个全新的模块空间。
下面是一种实际正确地模化角度js的方法。
angular.module("myapp.hello", []).controller("HelloController", function($scope) {
$scope.helloTo = {};
$scope.helloTo.title = "Test";
} );
angular.module("myapp.my", []).controller("MyController", function($scope) {
$scope.myData = {};
$scope.myData.showIt = true;
});
angular.module("myapp", [
'myapp.hello',
'myapp.my']);
- Node.js v6.2.0类扩展不是函数错误
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- RxJS:在循环中处理错误.js自定义驱动程序
- 如何在快递中抛出 404 错误.js
- 如何捕获服务器错误 JS
- 帆的“500”错误.js“测试项目”
- 快递中的会话未定义错误.js
- jquery.validate 中的错误.js“javaScript 运行时错误:无法获取未定义或空引用的属性'
- 角度动画中的奇怪错误.js
- 如何删除“对象在节点中没有方法'forEach'错误.js”
- 错误 JS 将发布数据发送到控制器 -CodeIgniter
- 使用摩卡在节点上测试错误.js函数
- 为什么 Magento js/varien/form.js IE 中的错误 - js fiddle
- 检测导致冻结等问题的错误 JS
- 三中的错误.js:相机不是三的实例.照相机
- 编译错误js.72.未处理的错误
- PHP停止表单重新加载显示错误Js
- 节点中的套接字挂断错误.js使用 https 时
- 纹理加载错误(JS动画)
- jasmineNodeOpts:执行量角器时出现意外的标识符错误.js