#angularjs #angular-ui-router
#angularjs #angular-ui-router
Вопрос:
Я пытаюсь разрешить контроллер и службу в ui-router reslove следующим образом
контроллер: ‘js/app/dashboard/dashboardService.js ‘, сервис — это: ‘js/app/dashboard/dashboard.Controller.js ‘
.state('dashboards.sample', {
url: "/outlook",
templateUrl: "views/Dashboard/sample.html",
data: { pageTitle: 'Outlook view', specialClass: 'fixed-sidebar' },
controller: 'productsController',
controllerAs: 'pd',
resolve: {
loadPlugin: function ($ocLazyLoad) {
return $ocLazyLoad.load([
{
name: 'ProductModule',
files: ['js/app/dashboard/dashboardService.js', 'js/app/dashboard/dashboard.Controller.js']
}
]);
}
}
})
Проблема в том, что контроллер загружается до обслуживания (иногда это происходит наоборот). Итак, есть ли способ вложенного решения этой проблемы, т. е. сначала загрузить службу, а не контроллер.
ошибка, обычно возникающая в консоли
angular.js:38 Uncaught Error: [$injector:nomod] http://errors.angularjs.org/1.5.0/$injector/nomod?p0=ProductModule(anonymous function) @ angular.js:38(anonymous function) @ angular.js:2015b @ angular.js:1939(anonymous function) @ angular.js:2013(anonymous function) @ dashboardService.js:2
angular.js:13236 Error: [$injector:unpr] http://errors.angularjs.org/1.5.0/$injector/unpr?p0=dashboardServiceProvider <-NaNashboardService <- productsController
at Error (native)
at http://localhost:8012/js/angular/angular.min.js:6:416
at http://localhost:8012/js/angular/angular.min.js:43:7
at Object.d [as get] (http://localhost:8012/js/angular/angular.min.js:40:270)
at http://localhost:8012/js/angular/angular.min.js:43:69
at d (http://localhost:8012/js/angular/angular.min.js:40:270)
at e (http://localhost:8012/js/angular/angular.min.js:41:1)
at Object.instantiate (http://localhost:8012/js/angular/angular.min.js:41:364)
at http://localhost:8012/js/angular/angular.min.js:87:42
at http://localhost:8012/js/ui-router/angular-ui-router.min.js:7:23333
Ответ №1:
Я сделал это, упомянув, чтобы загружать файлы последовательно (т.Е. serie: true,
). Таким образом, файл службы будет загружен до его использования в контроллере.
.state('dashboards.sample', {
url: "/outlook",
templateUrl: "views/Dashboard/sample.html",
data: { pageTitle: 'Outlook view', specialClass: 'fixed-sidebar' },
controller: 'productsController',
controllerAs: 'pd',
resolve: {
loadPlugin: function ($ocLazyLoad) {
return $ocLazyLoad.load([
{
serie: true,
name: 'ProductModule',
files: ['js/app/dashboard/dashboardService.js', 'js/app/dashboard/dashboard.Controller.js']
}
]);
}
}
})