2016-10-11 20 views
0

は次のとおりです。 'はJS /アプリ/ダッシュボード/ dashboardService.js'、 サービスがある:「はJS /アプリ/ダッシュボード/ダッシュボード。 Controller.js 'AngularJsのui-router解決でコントローラとサービスを解決することは可能ですか?私は</p> <p>コントローラを次のようにUI-ルータresloveのコントローラやサービスを解決しようとしている

.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%20%3C-NaNashboardService%20%3C-%20productsController 
    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 

答えて

0

である私は、ファイルの順次(すなわち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'] 
         } 
        ]); 
       } 
      } 
     }) 
関連する問題