我为main-app和sub-app定义了两个控制器'BaseController'和'SubController'。两个控制器的配置指向空URL。
以下是主应用程序的配置: -
angular.module("main-app").config(["$stateProvider", "$urlRouterProvider", function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('base', {
url: "",
views: {
"base": {
controller: 'BaseController'
}
}
});
}]);
这是子应用程序的配置: -
angular.module("sub-app").config(["$stateProvider", "$urlRouterProvider", function ($stateProvider, $urlRouterProvider) {
//$locationProvider.html5Mode(true);
$stateProvider
.state('sub', {
url: "",
views: {
"patients": {
templateUrl:"templates/scope/patients/patients_search.html",
controller: 'PatientsController'
}
},
});
}]);
主应用程序包括子应用程序。
如何允许使用相同的空URL加载两个控制器?
答案 0 :(得分:0)
首先,对于相同根视图的两个控制器没有任何意义。这是因为控制器需要视图上下文来操作,即$scope
层次结构中的位置。
我认为您需要的是将控制器抽象为可注入任何控制器的服务。例如,创建mainsrv
和subsrv
服务,然后在url: ''
上使用单个根控制器。然后您的根控制器定义可能如下所示:
angular.module('myapp', [])
.controller('AppCtrl', ['mainsrv', 'subsrv', function(mainsrv, subsrv){
// use mainsrv and subsrv services here
}]);
如果您确实希望在根视图上加载多个控制器,请按上述方法创建单个根视图,但在视图中使用ng-controller
来指定每个控制器的上下文。例如:
<div ng-controller="BaseController"></div>
<div ng-controller="PatientsController"></div>