Argument Controller不是一个函数,未定义-一个页面中有两个Angular应用程序
Argument Controller is not a function, got undefined - two Angular apps in one page
我基本上有这样的
(function(){
'use strict';
angular.module('app', []).controller('AppController', AppController);
AppController.$inject = ['$scope'];
function AppController($scope) {
//controller stuff
}
})();
(function(){
'use strict';
angular.element(document).ready(function() {
angular.bootstrap(document.getElementById('app'), ['app']);
});
})();
<div id="app" ng-controller="AppController">
<div id="doc" ng-controller="DocController">
{{hello}}
</div>
<script>
var App = angular.module('DocApp', []).controller('DocController', DocController);
DocController.$inject = ['$scope'];
function DocController($scope) {
$scope.hello = "HELLO WORLD";
}
angular.bootstrap(document.getElementById('doc'), ['DocApp']);
</script>
</div>
但是正在接收错误Argument 'DocController' is not a function, got undefined
我最初的想法是这与两个不同的应用程序有关,但我搞不清楚。
Angular解析页面时,在解析DOM树时会遇到指令。在您的情况下,它将在AppController之后解析DocController。因此,它将期望DocController是它可以访问的注册模块(在您当前的应用程序范围内)。
但是,在之后之前,您不会在单独的脚本标记中注册DocController,这意味着Angular在解析页面时没有定义它,即使定义了它,它也没有注入到您的应用程序模块中。
解决此问题的最简单方法是将脚本向上移动到应用程序入口点上方,但移动到AngularJS包含引用下方,以便在AngularJS启动应用程序并开始解析DOM然后注入之前对其进行解析和添加。
由于应用程序实际上只是另一个模块,一旦它被包括在内,你就需要在应用程序模块中引用它,以便它被注入并可用:
angular.module('app', ['DocApp']).controller('AppController', AppController);
当您启动app
模块时,<div id="app" ...
下的整个DOM都会被解析。
这意味着当遇到<div id="doc" ng-controller="DocController">
时,DocController
必须存在于app
模块中。在您的示例中,DocController
仅存在于DocApp
模块中,因此出现错误。
相关文章:
- 如何从浏览器中获取cookie,从另一个应用程序中删除
- 将两个express应用程序封装在一个应用程序中
- 我可以在一个应用程序中使用多个map v3吗
- 我正在用apachecordova开发一个应用程序,但每次我向局域网上的服务器发出ajax请求时,我都会收到这个错误
- 从另一个应用程序启动一个MobileFirst应用程序,并在活动启动后接收活动
- 嗨,我正在使用socket io在android中开发一个应用程序
- 一个应用程序中多个模型对象的角度 CRUD
- 我有一个应用程序,我想在画布上生成 3D 模型,但我不知道要使用哪个工具
- 在一个应用程序中,不同 html 中的不同合并和缩小的 js 文件
- 从一个 Angularjs 应用程序中从另一个应用程序调用函数
- 如何在我的网页上为iPhone用户创建一个注释,说明有一个应用程序
- ExtJS在面板中加载另一个应用程序
- 客户端和服务器在一个应用程序中
- 在一个应用程序中使用多个角度应用程序时的性能影响
- 只有一个应用程序在DOM中工作
- forever js正在停止另一个应用程序
- Rally:创建一个应用程序,在该应用程序中,用户故事将根据他们链接到的测试用例列出
- 如何将一个应用程序从Sublime Text带到web IDE中进行共享
- 我尝试使用R Shiny部署一个应用程序,但网页立即退出,并说诊断信息已记录到我的JavaScript控制台
- 是否有一个应用程序/服务允许您为AJAX请求创建远程数据库