директива angularjs не загружается, когда требуется пакет angularjs-dragula - PullRequest
0 голосов
/ 17 мая 2019

Я нахожусь в процессе переноса нашего проекта .NET Framework на .NET Core. И где мы ранее полагались на инструменты BundleTable в .NET Framework. Сейчас мы используем веб-пакет.

У меня есть директива, в которой используется пакет angularjs-dragula. Определение записи в веб-пакете следующее:

'bundles/grouping':
[
    "./Scripts/angularjs-dragula.js",
    "./App/components/grid.directive.js",
    "./App/components/inline-edit.directive.js",
    "./App/services/grouping.service.js",
    "./App/components/grouping/grouping.directive.js"
],

Я инициализирую директиву следующим образом:

(function () {
  angular.module('App').requires.push(angularDragula(angular));
    angular
      .module('App')
      .directive('appCustomGrouping', appCustomGrouping);

    appCustomGrouping.$inject = ['urlService', 'groupingService', 'dragulaService' ];

  function appCustomGrouping(urlService, groupingService, dragulaService) {
...

Как таковая, страница никогда не загружает grouping.directive. И ошибок нет. Если я не удаляю файл dragula в точке входа веб-пакета. Затем директива загрузится, но пожалуется:

ReferenceError: angularDragula не определен [Узнать больше]

Я попытался использовать пакет для импорта пакета и удалил его из определения записи. Я установил angularjs-dragula в мои node_modules и использовал

var angularDragula = require('angularjs-dragula');

(function () {
  angular.module('App').requires.push(angularDragula(angular));
    angular
      .module('App')
      .directive('appCustomGrouping', appCustomGrouping);

    appCustomGrouping.$inject = ['urlService', 'groupingService', 'dragulaService' ];

  function appCustomGrouping(urlService, groupingService, dragulaService) {
...

Однако это приводит к тому же поведению.

Пакет angularjs-dragula работает, так как мы использовали его до перехода в веб-пакет. Однако теперь кажется, что он молча терпит неудачу и забирает с собой остальную часть директивы?

Как мне начать диагностику этой проблемы?

1 Ответ

0 голосов
/ 17 мая 2019

Оболочка AngularJS для Dragula необычна тем, что помещает в глобальную область видимости функцию с именем angularDragula. Эта функция регистрирует модуль dragula в AngularJS, когда функция вызывается с angular в качестве аргумента. Возвращает строку с именем модуля "dragula".

angularDragula(angular)
angular.module("app",["dragula"])
.run(function(dragulaService) {
  console.log(dragulaService);
})  
<script src="//unpkg.com/angular/angular.js"></script>
<script src="//unpkg.com/angularjs-dragula/dist/angularjs-dragula.js"></script>

<body ng-app="app">
    <h1>Hello AngularJS!</h1>
</body>

страница никогда не загружается grouping.directive

Как мне начать диагностику этой проблемы?

Я бы использовал консоль разработчика для вставки точек останова. Затем изучите переменные.

Приведенный выше пример загружает AngularJS с Dragula и успешно регистрирует dragularService.

...