AngularJS 配置时从其他模块引用控制器 ui-router
AngularJS refer controller from other module when config ui-router
在下面的初始化代码中 angular-ui-router,
如果我有两个模块,它们都有IndexController,ui-router会用哪个?我可以通过 angular.module('targetModule').findController('IndexController')
?
之类的方式找到对控制器指定 constructor/function 的引用吗?
state: 'index',
url: '/',
views: {
'' : {
templateUrl: 'index',
controller: 'IndexController'
}
}
将使用的控制器将是第一个加载的控制器。一旦指令、服务或控制器被定义,它就不能被其他任何东西覆盖。
此时此刻,您必须避免名称冲突。
在 angular 中有一个 $injector
处理所有解析请求。我的建议是在注册控制器时只添加前缀。这样可以避免名称冲突:
var module1 = angular.module('m1', [....]);
var module2 = angular.module('m2', [....]);
module1.controller('m1.IndexController', ['$http', function($http) {
// do something interesting.
}]);
module2.controller('m2.IndexController', ['$http', function($http) {
// do something interesting else.
}]);
在下面的初始化代码中 angular-ui-router,
如果我有两个模块,它们都有IndexController,ui-router会用哪个?我可以通过 angular.module('targetModule').findController('IndexController')
?
state: 'index',
url: '/',
views: {
'' : {
templateUrl: 'index',
controller: 'IndexController'
}
}
将使用的控制器将是第一个加载的控制器。一旦指令、服务或控制器被定义,它就不能被其他任何东西覆盖。
此时此刻,您必须避免名称冲突。
在 angular 中有一个 $injector
处理所有解析请求。我的建议是在注册控制器时只添加前缀。这样可以避免名称冲突:
var module1 = angular.module('m1', [....]);
var module2 = angular.module('m2', [....]);
module1.controller('m1.IndexController', ['$http', function($http) {
// do something interesting.
}]);
module2.controller('m2.IndexController', ['$http', function($http) {
// do something interesting else.
}]);