3

Я пытаюсь загрузить новый модуль «testlazy» в приложение при определении состояния в app.config, используя oclazyload и UI-маршрутизаторUI-маршрутизатор состояние с oclazyload не загружает новый модуль для приложения

Нужно ли мне require.js подключиться, чтобы загрузить новый модуль с существующим приложением? Я думал, что oclazyload будет ссылаться на новый модуль, добавленный в приложение. Пожалуйста, поправьте меня, если я нахожусь на неправильном пути

Вот мой новый модуль, который находится под

/js/testlazy 

    module.js 
    testlazyController.js 

У меня есть файл module.js и testlazyController.js.

в моей index.html

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

    </head> 



<body class="container"> 
    <h1 class="page-header">$ocLazyLoad</h1> 
    <div ui-view="lazyLoadView"></div> 
</body> 

Моего app.js

var aModule = angular.module('dApp', ['ui.router','oc.lazyLoad']); 


    aModule.config(['$locationProvider', '$stateProvider', '$urlRouterProvider', '$httpProvider', '$ocLazyLoadProvider', function ($locationProvider, $stateProvider, $urlRouterProvider, $httpProvider, $ocLazyLoadProvider) { 

$stateProvider 
    .state('testlazyload', { 
     parent: 'authenticated', 
     url: '^/testlazyload', 
     templateUrl: 'html/templates/header.html', 
     controller: "testlazyController", 
     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/testlazy/testlazyController.js'); 
      }] 
     } 
    }); 

    $urlRouterProvider.otherwise('/login'); 
    }]); 

Моего testlazyController.js

angular.module('testlazy').controller('testlazyController', ['$scope', '$q', 'ModalService', '$state', '$filter', '$ocLazyLoad', 
function ($scope, $q, ModalService, $state, $filter, $ocLazyLoad) { 
    console.log("lazyloading complete"); 
}]); 

Моего module.js

angular.module('testlazy', []); 

Я все время получаю сообщение об ошибке: $ injector: nomod Module Недоступная ошибка в моей консоли.

Как только я refrence файлы js в моем index.html, используя теги скрипта, он работает, но тогда я больше не использую ленивую загрузку правильно?

+0

Вы нашли решение? Я также сталкиваюсь с той же проблемой. – khagesh

+0

Я тоже! иногда это работает, иногда это не так ... Я еще не понял: \ Мне интересно, связано ли это с настройкой контроллера в представлении вместо ui-router? Но ui-router бросает другую ошибку, если я пытаюсь установить контроллер там. Я обновлю, когда буду считать свою проблему. : | –

+0

Поразмыслив! Моя проблема была в моем синтаксисе в объявлении контроллера. Была опечатка, которая помешала бы контроллеру работать с ленивой загрузкой или без нее. –

ответ

0

Я не quety знакомы с ocLazyload и я не уверен, если это на самом деле поможет, но попытаться использовать это:

loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) { 
     // you can lazy load files for an existing module 
     return $ocLazyLoad.load({ name:'testlazy', files: 'js/testlazy/testlazyController.js'}); 
     }] 

или вы должны настроить $ocLazyLoadProvider

$ocLazyLoadProvider.config({ 
modules: [{ 
    name: 'testlazy', 
    files: ['js/testlazy/testlazyController.js'] 
}] 

}); После настройки вы должны иметь возможность загрузить модуль следующим образом:

loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) { 
     // you can lazy load files for an existing module 
     return $ocLazyLoad.load('testlazy'); 
     }] 
+0

Я пробовал этот подход, он все еще не работает, и он не может загрузить мой модуль – looneytunes