2015-12-02 81 views
0

我想在我的角度項目中使用延遲加載:不能在角與oc.lazyLoad懶負載控制器 - 控制器沒有找到

這是相關app.js代碼:

var app = angular.module('eva', ['ui.router', 
    'controllers', 'oc.lazyLoad']); 

app.config(['$stateProvider', '$urlRouterProvider', '$httpProvider', '$locationProvider', '$ocLazyLoadProvider', 
    function($stateProvider, $urlRouterProvider, $httpProvider, $locationProvider, $ocLazyLoadProvider) { 
    $httpProvider.interceptors.push('AuthInterceptor'); 


    $urlRouterProvider.otherwise("/"); 
    $locationProvider.hashPrefix('!'); 

    $stateProvider.state('challenge', { 
     url: '/challenges', 
     templateUrl: 'views/Challenges.html', 
     controller: 'ChallengeCtrl', 
     onEnter: ['$state', 'auth', function($state, auth) { 
     if (!auth.isLoggedIn()) { 
      $state.go('login'); 
     } 
     }], 
     resolve: { // Any property in resolve should return a promise and is executed before the view is loaded 
     loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) { 
      // you can lazy load files for an existing module 
      return $ocLazyLoad.load('js/controllers/ChallengeController.js'); 
     }] 
     } 

這是我的控制器定義代碼:

angular.module('eva').controller('ChallengeCtrl', ['$scope', 'auth','$translate', 'challengeFactory', 'userFactory', 'userService', 
    function($scope, auth, $translate, challengeFactory, userFactory, userService) { 

我不是裝在index.html文件中的challengecontroller.js文件。

我只包括在index.html文件app.js前oclazyload:當我運行應用程序

<script type="text/javascript" src="js/lib/oclazyload/dist/ocLazyLoad.js"></script> 
     <script type="text/javascript" src="js/app.js"></script> 

現在我得到這個錯誤:

Error: [ng:areq] http://errors.angularjs.org/1.4.7/ng/areq?p0=ChallengeCtrl&p1=not%20a%20function%2C%20got%20undefined 

我試過很多事情懶加載,他們都沒有工作。現在我只是沿着這個例子Example

我真的在這裏泡菜,我不知道怎麼做才能讓延遲加載工作。我寧願不要與requirejs一起工作。

回答

0

angular config is just a function,在你調用這個配置之前,任何依賴應該已經是$ inject。您可以將其包含在<script>標記中,並將其添加到app = angular.module['app', ['depend1'])

因此您可以對其進行更改並再次嘗試。

 
app.config(function($stateProvider, $urlRouterProvider, $httpProvider, $locationProvider, $ocLazyLoadProvider) { 

BTW:打開你的瀏覽器開發工具,以檢查該文件js/controllers/ChallengeController.js是否正確

loadead