Контроллер загружен в DOM, но представление не загружено и не может найти контроллер - oclazyload с jade (pugjs)

Я использую angular 1.6 для своего проекта и angular-ui-routing для маршрутизации с PugJs для шаблонов HTML. Я пытаюсь реализовать Lazyload в своем приложении, но почему-то он не работает из-за нефрита. код:

var app = angular.module('myApp',['ui.router','oc.lazyLoad']);
app.config(['$ocLazyLoadProvider', function($ocLazyLoadProvider
 {
   $ocLazyLoadProvider.config({
   debug: true,
   modules: [{
   name: 'js',
   files: ['js/*']
 }]
});
}]);

.state("exampleState", {
        url: '/example',
        templateUrl: '/example',
        controller:'exampleCtrl',

        resolve: {
            deps: ['$ocLazyLoad', function($ocLazyLoad) {
                return $ocLazyLoad.load({
                    files: ['/js/exampleCtrl.js']
                })
            }]
        }
    })

Контроллер:

app.controller('exampleCtrl',function($scope){
  console.log('controller loaded');
});

и во внешнем интерфейсе я использую node для преобразования этих нефритов в HTML, поэтому при доступе к templateUrl службами маршрутизации он будет перенаправлен на этот код:

app.get('/example', function(req, res) {
    res.render('/example');
});

это загружает example.jade в поле зрения. Я получаю это в консоли

  

[$ controller: ctrlreg] Контроллер с именем exampleCtrl не зарегистрирован.

Даже после загрузки файла контроллера в DOM, а также представление не отображается. любая помощь в отношении вопроса приветствуется. Спасибо

7 голосов | спросил the_mishra 24 Maypm17 2017, 16:44:07

2 ответа


0

После долгих поисков и попыток я нашел решение, проблема заключалась в глобальной переменной для модуля при создании контроллера. Вместо использования

app.controller('exampleCtrl',function($scope){
  console.log('controller loaded');
});

Я использовал angular.module('myApp').controller(,,,);

Ссылка: Проблемы с ocLazyLoad

ответил the_mishra 7 J0000006Europe/Moscow 2017, 16:48:58
0

Я думаю, вы должны сделать это немного по-другому. Попробуйте это:

$stateProvider.state('exampleState', {
  url: "/example",
  views: {
    "exampleLazyLoadView": {
      controller: 'exampleCtrl',
      templateUrl: '/example.html'
    }
  },
  resolve: { // Any property in resolve should return a promise and is executed before the view is loaded
    loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) {
             return $ocLazyLoad.load('/js/exampleCtrl.js');
    }]
  }
});
ответил Saulius Next 2 J0000006Europe/Moscow 2017, 13:34:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132