Angularjs Angular代码在RubyonRails缩小和浓缩后被破坏

Angularjs Angular代码在RubyonRails缩小和浓缩后被破坏,angularjs,Angularjs,Ruby on Rails框架会自动缩小和压缩所有文件,从而导致此错误: “错误:[$injector:unpr]未知提供程序:eProvider 您应该在数组的参数用引号括起来之后将控制器函数添加到数组中。这允许从缩小中转义参数名称,以便Angular知道向控制器函数注入什么 您应该在数组的参数写在引号中之后将控制器函数添加到数组中。这允许从缩小中转义参数名称,以便Angular知道向控制器函数注入什么。问题取决于$injector的注释 例如,当您执行变量mangling时,服务UserSe

Ruby on Rails框架会自动缩小和压缩所有文件,从而导致此错误:

“错误:[$injector:unpr]未知提供程序:eProvider 您应该在数组的参数用引号括起来之后将控制器函数添加到数组中。这允许从缩小中转义参数名称,以便Angular知道向控制器函数注入什么


您应该在数组的参数写在引号中之后将控制器函数添加到数组中。这允许从缩小中转义参数名称,以便Angular知道向控制器函数注入什么。

问题取决于
$injector
的注释

例如,当您执行
变量mangling
时,服务
UserService
将变为
a
,并且它无法由
$injector container
解决

您需要注释此依赖项,angular提供了许多方法:

  • 数组表示法:
    app.controller('MyCtrl',['$scope','greeter',function($scope,greeter){}]);

  • $inject
    属性:
    函数MyCtrl($scope,greeter){}
    MyCtrl.$inject=['$scope','greeter'];
    app.controller('MyCtrl',MyController);
  • 有关更多信息,请访问:

    有许多插件可以为您做到这一点:

    最后,如果希望始终确保代码即使在缩小时也能正常工作,请使用
    ngstrictdi
    指令(即使在开发中)。
    $injector/strictdi

    问题取决于
    $injector
    的注释

    例如,当您执行
    变量mangling
    时,服务
    UserService
    将变为
    a
    ,并且它无法由
    $injector container
    解决

    您需要注释此依赖项,angular提供了许多方法:

  • 数组表示法:
    app.controller('MyCtrl',['$scope','greeter',function($scope,greeter){}]);

  • $inject
    属性:
    函数MyCtrl($scope,greeter){}
    MyCtrl.$inject=['$scope','greeter'];
    app.controller('MyCtrl',MyController);
  • 有关更多信息,请访问:

    有许多插件可以为您做到这一点:

    最后,如果希望始终确保代码即使在缩小时也能正常工作,请使用
    ngstrictdi
    指令(即使在开发中)。
    $injector/strictdi

    您应该查看DialogCtrl。您可能没有将一个参数(injector)添加到字符串数组。@CKK我为没有在代码中添加该控制器而道歉,我现在添加了它。您应该查看DialogCtrl。您可能没有添加一个参数(injector)到字符串数组。@CKK我很抱歉没有在代码中添加那个控制器,我现在添加了它。
    var AppControllers = angular.module('AppControllers',[]);
    
    AppControllers.controller('MainCtrl',[
      function(){
    }]);
    
    AppControllers.controller('SidebarCtrl', [
      '$scope', '$timeout', '$mdSidenav', '$log', '$http',
      function($scope, $timeout, $mdSidenav, $log, $http){
        $scope.closeNav = function(){
          $mdSidenav('nav').close()
            .then(function(){
              $log.debug("close nav is done");
            });
        };
    }]);
    
    AppControllers.controller('DialogCtrl', function($scope, $mdDialog) {
      $scope.openDialog = function() {
        $mdDialog.show(
          $mdDialog.alert()
            .clickOutsideToClose(true)
            .title('Informacija o podacima')
            .textContent('Navedeni podaci su povijesni. flightmap4.me ne preuzimaju odgovornost za njihovo korištenje prilikom donošenja odluke o rezervaciji ili kupnji aviokarte. Cijena aviokarte ovisi o trenutnoj raspoloživosti na pojedinom letu. Finalna cijena aviokarte vidljiva je na trećem koraku rezervacijskog procesa.')
            .ariaLabel('Info dialog')
            .ok('Zatvori')
            .openFrom('#left')
            .closeTo(angular.element(document.querySelector('#left')))
        );
      };
    });
    
    var Flightmap = angular.module('Flightmap', [
      'ngMaterial',
      'AppControllers'
    ]);
    
    AppControllers.controller('DialogCtrl', ['$scope', '$mdDialog', function($scope, $mdDialog) {
      $scope.openDialog = function() {
        $mdDialog.show(
          $mdDialog.alert()
            .clickOutsideToClose(true)
            .title('Informacija o podacima')
            .textContent('Navedeni podaci su povijesni. flightmap4.me ne preuzimaju odgovornost za njihovo korištenje prilikom donošenja odluke o rezervaciji ili kupnji aviokarte. Cijena aviokarte ovisi o trenutnoj raspoloživosti na pojedinom letu. Finalna cijena aviokarte vidljiva je na trećem koraku rezervacijskog procesa.')
            .ariaLabel('Info dialog')
            .ok('Zatvori')
            .openFrom('#left')
            .closeTo(angular.element(document.querySelector('#left')))
        );
      };
    }]);