#javascript #angularjs #angular-ui-router #angular-controller
#javascript #angularjs #angular-ui-router #angular-controller
Вопрос:
Я создал приложение, которое динамически загружает маршруты и, в свою очередь, контроллеры.
Мои контроллеры добавляются с помощью ng-repeat в мой индексный файл, а затем загружаются вручную.
Проблема, с которой я сталкиваюсь, заключается в том, что при обновлении иногда загружается моя маршрутизация и пытается перенаправить на заданный маршрут до загрузки его контроллера.
Мой вопрос в том, есть ли способ определить, загружен ли контроллер с помощью какого-либо события?
Динамически загружайте мои контроллеры:
<script ng-repeat="script in clientScripts" ng-src="{{script}}"></script>
Вручную загрузите контроллеры
app.config(function($provide, $compileProvider, $controllerProvider, $routeProvider, $httpProvider, uiGmapGoogleMapApiProvider, $injector, toastrConfig, constant) {
app.$$registerFactory = $provide.factory;
app.$$registerService = $provide.service;
app.$$registerCtrl = $controllerProvider.register;
app.$$routeProviderRef = $routeProvider;
app.$$httpProviderRef = $httpProvider;
app.$$registerDirective = $compileProvider.directive;
...
...
Инициализировать мой контроллер
app.$$registerCtrl('AchievementsController', AchievementsController);
Динамически загружайте мои маршруты
/*
// DYNAMIC CLIENT ROUTING
// ======================
// corresponding controllers and factories need
// to be added in the client config.json
*/
$rootScope.$watch('config', function(x, y, z) {
if ($rootScope.config) {
// get route json and start adding routes
$http.get('../content/' $rootScope.config.contentFolder '/config/route.json').then(function(response) {
angular.forEach(response.data, function(value) {
// Add routes from client route.json
angular.module('dashboard').$$routeProviderRef.when(value.route, {
caseInsensitiveMatch: value.vars.caseInsensitiveMatch,
templateUrl: value.vars.templateUrl,
resolve: {
auth: function(AuthFactory) {
return value.requiresAuthentication === true ? AuthFactory.IsAuthenticated() : AuthFactory.IsAnnonymous();
}
}
});
});
var route = SessionStorage.getObject('route');
if (route amp;amp; $route.current.originalPath != route amp;amp; route != '/dashboard') {
$location.path(route);
}
});
}
});