Приложение с отложенной загрузкой не загружает директиву
Я пытаюсь лениво загрузить директиву в мое угловое приложение, используя ui.router и oc.lazyLoad. Вот мой код:
меню:
<ul>
<li><a ui-sref="home">Home</a></li>
<li><a ui-sref="demo">Demo</a></li>
<li><a ui-sref="test">Test</a></li>
</ul>
<ui-view></ui-view>
Конфигурация маршрута:
angular.module('app', ['ui.router', 'oc.lazyLoad'])
.config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider) {
$stateProvider
.state("demo", {
url:'/demo',
views: {
'lazyLoadView' : {
template: '<demo-directive></demo-directive>'
}
},
resolve : {
loadDemoModule : ['$ocLazyLoad', function($ocLazyLoad) {
console.log('resolving demo lazy load');
return $ocLazyLoad.load('demo.js');
}]
}
})
.state("home", {
templateUrl : 'core/home.html',
url : '/home'
})
}])
и директива:
angular.module('app').
directive('demoDirective', function() {
return {
restrict: 'E',
scope: {},
template: require('./demo-directive.html'),
// templateUrl: 'demo-directive.html',
controllerAs: 'demo',
controller : ['$timeout', function($timeout) {
console.log('in directive controller');
}]
};
});
У меня нет ошибок, console.log
при разрешении функции отображается, файл demo.js загружается, но затем происходит замечание, контроллер директивы формы консоли не отображается. Я пытаюсь следовать первому примеру из примера ocLazyLoad
Спасибо
2 ответа
Как насчет ленивой загрузки таким образом.
return $ocLazyLoad.load({
name: 'app.demo',
files: ['path/to/demo.js']
})
Вы не объявили модуль oc.lazyLoad как зависимость.
angular.module('app.demo', ["oc.lazyLoad"])
Смотрите быстрый старт - https://oclazyload.readme.io/docs/
Вы также не закрываете свою демонстрационную директиву
template: '<demo-directive></demo-directive>'