角度如何解析模块中定义的控制器
How does angular resolve controllers defined in modules?
查看控制器的角度文档,有一些东西让我感到困惑。假设有人这样做:
angular.module('foo').controller('controller1', ['$scope', function($scope) {
});
和:
<div ng-app='app' ng-controller='controller1'>
</div>
angular如何知道'controller1'驻留在模块`o'中?
此外,如果有人这样做:
angular.module('bar').controller('controller1', ['$scope', function($scope) {
});
angular现在会选择哪一个?
当您在此处声明ng-app
时:
<div ng-app='app' ng-controller='controller1'>
</div>
Angular将查找名称为app
的模块定义。类似这样的东西:
angular.module('app', []); // notice the []
在第二个参数[]
数组中,Angular想要依赖的模块。因此,为了从foo
模块中包含controller1
,您需要执行以下操作:
angular.module('app', ['foo']);
来自bar
模块:
angular.module('app', ['bar']);
在每一个中,只有一个名为controller1
的控制器。
那么,当您同时注册foo
和bar
模块时会发生什么呢?我认为最后一个会赢。因此,如果您将app
定义为:
angular.module('app', ['foo', 'bar']);
然后,bar
模块的controller1
将覆盖注入器内的名称controller1
。
因此,没有允许在模块之间应用相同名称的内置机制。因此,您可以使用命名方案来确保控制器是唯一的:
angular.module('bar').controller('bar.controller1', ['$scope', function($scope) {
});
angular如何知道"controller1"驻留在模块"foo"中?
Angular在解析controller1
时,不知道它在哪个模块中。一旦模块是依赖的(依赖于ng-app
中定义的模块),所有控制器(在所有模块中)都只解析其名称。
foo
或bar
,然后注册controller1
。
如果同时包含foo
和bar
,则controller1
来自上次包含的任何模块。
相关文章:
- 当显式定义控制器参数时,默认模型绑定器会发生异常
- 错误:Error:areq定义控制器时参数错误
- 如何在多个文件中定义控制器 - AngularJs.
- 如何使用requireJs以正确的顺序定义控制器,路由器和应用程序
- 使用自定义控制器在不同视图中共享范围
- 在路由中设置自定义控制器属性
- 尝试在单独的文件中定义控制器时出现错误:ng:areq参数错误
- 在单个模块中声明时未定义控制器
- 如何使用ui路由器在组件驱动架构中定义控制器
- 角载荷自定义控制器
- 测试角度控制器:未定义控制器
- 控制器不是一个函数,在全局定义控制器时未定义
- Angular JS指令定义——需要ngModelController和自定义控制器
- 在AngularJS中定义控制器
- ASP.. Net MVC复选框值从视图到自定义控制器方法
- AngularJS中定义控制器的两种方法
- 如何添加自定义控制器而不添加额外的层在谷歌地图
- Ember需要API;ReferenceError:未定义控制器
- Vimeo内嵌视频自定义控制器(全屏和音量控制)在media element js中不起作用
- 角度定义控制器