У меня была другая проблема, но мое решение может быть полезно и в вашем случае.
Что делать, если вы будете направлять всю вашу маршрутизацию на один контроллер (назовем его «RouteController»). В качестве шаблона используйте div с «ng-include», который будет загружать шаблон + контроллер для каждого «$ routeParams», который у вас есть, только после завершения вашей длинной задачи.
Это будет выглядеть примерно так:
$routeProvider.when('/', {
template: '<div ng-include src="templateUrl"></div>',
controller: 'RouteController'
});
$routeProvider.when('/app/:app/model/:model', {
template: '<div ng-include src="templateUrl"></div>',
controller: 'RouteController'
});
Теперь, внутри «RouteController» вы можете сделать свой «HomeCtrl» длинную задачу и когда сделано добавить «$ scope.templateUrl» логику в соответствии с тем, что у вас есть внутри "$ routeProvider". В вашем случае, если пустые параметры «$ routeProvider» будет установлен в 'home.html и все другие на «detail.html»:
$scope.templateUrl = 'detail.html';//Or 'Home.html' if no $routeProvider params
Единственное, чего не хватает, чтобы закрыть цикл настройки регулятора для каждого шаблона , внутри самого шаблона, как 'ng-controller'. Например, внутри «home.html» Использование:
<div ng-controller="HomeCtrl"></div>
Я надеюсь, что мое решение является очевидным и может быть полезным в вашем случае ...
Вы должны выполнить фактическое HomeCtrl или вы можете просто просто выполнить метод HomeCtrl явно из метода ModelDetailCtrl? – Jason
В HomeCtrl есть длинная задача, и она должна быть выполнена, и только ModelDetails должен запускаться – 0xAX