2015-04-06 64 views
4

我有一個應用程序,其中有一個腳本加載最初加載和列表隨着開發的進展而增長。我想懶惰加載包含控制器的腳本,並在需要時。我正在使用OcLazyLoad和ngRoute作爲路由選項(我嘗試使用ui-route,它實際上具有相同的最終結果,但導致其他應用程序問題)。延遲加載和路由工作正常,腳本和視圖只在需要的時候加載,但問題是控制器沒有被加載(參數'caseReviewController'不是),所以就好像控制器不存在一樣。角度控制器不使用OcLazyLoad和ngRoute加載

這裏是什麼,我在我的app.js文件的簡單版本...

var app = angular.module('dashboard', ['oc.lazyLoad', 'ngRoute', 'LocalStorageModule']); 


     app.config(function ($ocLazyLoadProvider, $routeProvider, localStorageServiceProvider) { 


       $ocLazyLoadProvider.config({ 
         loadedModules: ['dashboard'], modules: [ 
          { 
           name: 'caseReview', 
           files: ['js/controllers/case-review.js'] 
          } 
         ] 
       }); 


       $routeProvider 

         //other routes here... 

         .when('/case-review', { 
          templateUrl: 'views/case-review.html', 
          controller: 'caseReviewController', 
          resolve: { 
           loadModule: ['$ocLazyLoad', function ($ocLazyLoad) { 
            return $ocLazyLoad.load('caseReview'); 
           }] 
          } 
         }) 

}); 

在單獨的情況下,review.js文件我有一個簡單的控制器

app.controller('caseReviewController', function($scope, localStorageService, $route){ 
    //do stuff 
}); 

這個控制器沒有被發現或執行,但視圖和js文件正在按預期延遲加載。任何幫助都會很棒。

謝謝。

回答

10

在單獨的case-review.js中,您必須獲得app的引用。

angular.module('dashboard').controller('caseReviewController', function($scope, localStorageService, $route){ 
    //do stuff 
}); 

正如你所提到的它在單獨的文件,它可能不知道的app變量。最好在單獨的文件中獲取角度模塊的引用。

這必須解決您的問題。

+0

是的,你是完全正確的,我的主要監督......這就是你看屏幕太長了!謝謝你的幫助。 – dbach 2015-04-06 16:23:13

+0

有什麼辦法可以使用應用程序變量?如果我必須將它更改爲angular.module以獲得許多文件,這將浪費時間....... – Torrezzzz 2015-12-22 08:35:50

相關問題