0

Я с помощью UI-маршрутизатор и UI-самозагрузку/модальногоUi-маршрутизатор модальная ошибка впрыска на минификации

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

Мне нужно иметь модальный во всех состояниях, поэтому я создал функцию для добавления в некоторые состояния ui-router. Вот функция:

var modalSaleDelete = ['$state', '$modal', 
    function($state, $modal) { 
     $modal.open({ 
     templateUrl: 'views/sale/delete.html', 
     resolve: { 
      parentScope: function($rootScope) { 
      return $rootScope.parentScope; 
      } 
     }, 
     controller: function($scope, parentScope) { 

      $scope.delete = function() { 
      // TODO: change the way this is called 
      parentScope.resetOrder(); 

      parentScope = null; 
      $scope.$close('cancel'); 
      }; 

      $scope.cancel = function() { 
      parentScope = null; 
      $scope.$dismiss('cancel'); 
      }; 
     } 
     }).result.then(function() { 
     return $state.transitionTo($state.$current.parent); 
     }, function() { 
     return $state.transitionTo($state.$current.parent); 
     }); 
    } 
    ]; 

Тогда я положил, что в каждом государстве:

.state('sale.new.catalog.delete', { 
     url: '/delete', 
     onEnter: modalSaleDelete 
    }) 

Он отлично работает на развитие, но когда я Минимизировать это я получаю сообщение об ошибке:

Error: [$injector:unpr] Unknown provider: aProvider <- a 
http://errors.angularjs.org/1.2.24/$injector/unpr?p0=aProvider%20%3C-%20a 
    at http://localhost/ociWeb/code/dist/scripts/vendor.29d508bc.js:3:26944 
    at http://localhost/ociWeb/code/dist/scripts/vendor.29d508bc.js:4:11462 
    at Object.c [as get] (http://localhost/ociWeb/code/dist/scripts/vendor.29d508bc.js:4:10723) 
    at http://localhost/ociWeb/code/dist/scripts/vendor.29d508bc.js:4:11557 
    at c (http://localhost/ociWeb/code/dist/scripts/vendor.29d508bc.js:4:10723) 
    at Object.d [as invoke] (http://localhost/ociWeb/code/dist/scripts/vendor.29d508bc.js:4:11008) 
    at http://localhost/ociWeb/code/dist/scripts/vendor.29d508bc.js:8:20044 
    at Object.f [as forEach] (http://localhost/ociWeb/code/dist/scripts/vendor.29d508bc.js:3:27387) 
    at j (http://localhost/ociWeb/code/dist/scripts/vendor.29d508bc.js:8:19961) 
    at Object.k.open (http://localhost/ociWeb/code/dist/scripts/vendor.29d508bc.js:8:20414) 

I отлаживаем это, а aProvider должен быть «$ state».

Любая идея о том, как это сделать?

ответ

0

Попробуйте ввести их вручную, создав свойство инъекции. У вас есть jsfiddle или plunker?

modalSaleDelete.$inject = ['$state', '$modal']; 
1

Вам необходимо аннотировать EVERY injection для минимизации на работу. Или, если вы используете углоподобный мини-фильтр, он, вероятно, не понимает, какие функции вводятся с помощью UI-Router и которые являются стандартными функциями.

var modalSaleDelete = ['$state', '$modal', 
    function($state, $modal) { 
     $modal.open({ 
     templateUrl: 'views/sale/delete.html', 
     resolve: { 
      parentScope: [ '$rootScope', function($rootScope) { 
      return $rootScope.parentScope; 
      }] 
     }, 
     controller: [ '$scope', 'parentScope', function($scope, parentScope) { 

      $scope.delete = function() { 
      // TODO: change the way this is called 
      parentScope.resetOrder(); 

      parentScope = null; 
      $scope.$close('cancel'); 
      }; 

      $scope.cancel = function() { 
      parentScope = null; 
      $scope.$dismiss('cancel'); 
      }; 
     }] 
     }).result.then(function() { 
     return $state.transitionTo($state.$current.parent); 
     }, function() { 
     return $state.transitionTo($state.$current.parent); 
     }); 
    } 
    ]; 
+0

Я на самом деле использую углоноситель, и это так, как вы сказали, мне нужно ввести $ state в нужную точку. Проблема заключается в нахождении, потому что в стеке отображаются только функции поставщика, поэтому я не знаю, с чего начать отладку моей части. Спасибо за помощь, хотя – subarroca

0

Ну, я понял это. Я не понимаю, почему, но проблема была в разрешении. Я решил, что он вводит «$ state» в разрешении, хотя он не нужен. При отладке я только что увидел, что aProvider пытался впрыснуть туда.

var modalSaleDelete = ['$rootScope', '$state', '$modal', 
    function($rootScope, $state, $modal) { 
     $modal.open({ 
     templateUrl: 'views/sale/delete.html', 
     resolve: { 
      parentScope: ['$state', '$rootScope', function($state, $rootScope) { 
      return $rootScope.parentScope; 
      }] 
     }, 
     controller: ['$scope', '$state', 'parentScope', function($scope, $state, parentScope) { 

      $scope.delete = function() { 
      // TODO: change the way this is called 
      parentScope.resetOrder(); 

      parentScope = null; 
      $scope.$close(); 
      }; 

      $scope.cancel = function() { 
      parentScope = null; 
      $scope.$dismiss(); 
      }; 
     }] 
     }).result.then(function() { 
     // close 
     return $state.transitionTo($state.current.name.replace('.delete', '')); 
     }, function() { 
     // dismiss 
     return $state.transitionTo($state.current.name.replace('.delete', '')); 
     }); 
    } 
    ]; 
Смежные вопросы