2015-03-29 4 views
2

Я попытался лениво загрузить контроллер в приложение angularjs, но застрял с некоторыми проблемами, то есть просмотрел нагрузки после контроллера, но в контроллере исключений контроллер исключений не найден.Угловой ленивый контроллер загрузки не найден Исключено

Здесь я прикрепил образец кода.

index.html:

<a href="#/test1">Click here</a> 
    <div data-ng-view> 
    </div> 

    <script src="js/angular.min.js"></script> 
    <script src="js/angular-route.min.js"></script> 
    <script src="js/ocLazyLoad.min.js"></script> 
    <script src="js/app.js"></script> 
    <script src="js/cofig.js"></script> 

    </body> 
    </html> 

app.js:

 var testapp = angular.module('test',['ngRoute','oc.lazyLoad']); 

config.js:

 testapp.config(['$routeProvider',function($routeProvider){ 
    $routeProvider.when('/test1',{ 
    templateUrl: 'partials/test.html', 
    controller: 'testController', 
     resolve: { 
     lazy: ['$ocLazyLoad',function($ocLazyLoad) { 

      $ocLazyLoad.load([{ 
       name: 'test', 
       files: ['js/testController.js'] 

      }]); 

      }] 
     } 
    }) 

    }]); 

совместно nsole.log ошибка: -

enter code here`Error: [ng:areq] http://errors.angularjs.org/1.3.7/ng/areq?p0=testController&p1=not%20aNaNunction%2C%20got%20undefined 

ответ

-1

Вы должны добавить службу LazyLoad к вашей инъекции конфигурации:

testapp.config(['$routeProvider', '$ocLazyLoad', function($routeProvider, $ocLazyLoad){ 
$routeProvider.when('/test1',{ 
templateUrl: 'partials/test.html', 
controller: 'testController', 
    resolve: { 
    lazy: ['$ocLazyLoad',function($ocLazyLoad) { 

     $ocLazyLoad.load([{ 
      name: 'test', 
      files: ['js/testController.js'] 
     }]); 
     ....... 

[ОБНОВЛЕНО] Я думаю, вы определили свой контроллер тестов в файле JS и хотите ленивым загрузить контроллер. Но ваш код неправильный. Попробуйте это:

testapp.config(['$routeProvider', '$ocLazyLoad', function($routeProvider, $ocLazyLoad){ 
$routeProvider.when('/test1',{ 
templateUrl: 'partials/test.html', 
controller: 'testController', 
    resolve: { 
    lazyTestCtrl: ['$ocLazyLoad',function($ocLazyLoad) { 
     return $ocLazyLoad.load('js/testController.js'); 
    }] 
    } 

Вы можете получить документ от official site.

+0

снова ошибка http://errors.angularjs.org/1.3.7/$injector/modulerr?p0=test&p1=Error%3A%20...2F%2Flocalhost%3A63342%2FrequireJSExample%2Fjs%2Fangular .min.js% 3A38% 3A435) –

+0

можете отправить мне любой пример –

1

Эта проблема связана с тем, что вы загружаете контроллеры лениво. Когда вы загружаете контроллер лениво, это не будет доступно для основного модуля. Поэтому вам нужно зарегистрировать эти контроллеры.

Прикрепив поставщика контроллера и предоставьте основному модулю, мы можем использовать его позже для регистрации контроллера.

В приложении конфигурации,

SampleApp.registerController = $controllerProvider.register; 
     SampleApp.$register = $provide; 

Чтобы зарегистрировать контроллер:

var SampleApp = angular.module('SampleApp'); 

    SampleApp.$register.factory('landingService', ['$http', '$rootScope', function ($http, $rootScope) { 
     debugger 
     return { 
      GetQuestions: function() { 
       return $http({ 
        url: "" 
       }); 
      } 
     } 
    }]); 

    SampleApp.registerController('landingController', 
     ['$scope', '$http', 'landingService', function (scope, http, landingService) { 
      scope.GetQuestions = function() { 
       landingService.GetQuestions().success(function (data) { 

       }). 
       error(function (data) { 

       }); 
      } 
     }]); 

Следующий учебник поможет вам реализовать Угловую отложенную загрузку, используя RequireJS с OcLazyLoad.

Angular Lazy Load implementation

Смежные вопросы