2013-11-28 7 views
6

私は、Microsoft Ajax Minifierを使用してJSを縮小するCassetteを使用しています。このミニカーは、$scope$httpなど、Angularに特別な意味を持つ変数を含む変数の名前を変更します。だからカセットは私の角度コードを壊す!MinificationがAngularJsコードを破る

どうすればこのようなことを防ぐことができますか?

参考のため、これは壊れている角度コードです。 $scope$http関数パラメータの名前が変更されています:

// <reference path="vendor/angular.js" /> 

angular.module('account-module', []) 
    .controller('ForgottenPasswordController', function ($scope, $http) { 

     $scope.email = { 
      value: '', 
      isValid: false, 
      containerStyle: "unvalidated", 
      validate: function() { 
       var valid = isEmailAdressValid($scope.email.value); 
       $scope.email.isValid = valid; 
       $scope.email.containerStyle = valid ? "valid" : "invalid"; 
       return valid; 
      }, 
      removeErrorMessage: function() { 
       $scope.email.containerStyle = "unvalidated"; 
      } 
     }; 

     $scope.display = { 
      formClass: '', 
      congratulationsClass: 'hide' 
     }; 

     $scope.submit = function (event) { 
      event.preventDefault(); 

      var emailValid = $scope.email.validate(); 
      if (emailValid) { 
       $http({ 
        method: 'POST', 
        url: '/account/forgot-password', 
        params: { email: $scope.email.value }, 
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' } 
       }).success(function(data) { 
        $scope.success(data); 
       }).error(function() { $scope.error(); }); 
      } 
     }; 

     $scope.success = function (data) { 
      switch (data.Outcome) { 
       case 1: 
        $scope.display.formClass = "hide"; 
        $scope.display.congratulationsClass = ""; 
        break; 
       case 2: 
        $scope.email.containerStyle = "invalid"; 
        break; 
      } 
     }; 

     $scope.error = function() { 
      alert('Sorry, an error occurred.'); 
     }; 

     function isEmailAdressValid(emailAddress) { 
      return /[^\[email protected]][email protected][^\[email protected]]+\.[^\[email protected]]+/.test(emailAddress); 
     } 
    }); 
+2

正しい構文または間違った構文を使用している場合はコントローラの構文を表示できますか? –

答えて

15

あなたの角度のアプリケーションを破壊するからコードminifiersを防ぐには、コントローラを定義するために、配列の構文を使用する必要があります。 (OPより)http://odetocode.com/blogs/scott/archive/2013/03/13/angularjs-controllers-dependencies-and-minification.aspx

ルック: 参考のために、ここで変更されたコードです:

angular.module('account-module', []) 
    .controller('ForgottenPasswordController', ["$scope", "$http", function ($scope, $http) { 
... 
}]); 
+14

私は過度の演奏を意味するわけではありませんが、あなたは私の人生と人類の未来を救っています。 – David

1

が、私はカセットがこれを追加したときにはよく分からないが、あなたは、バンドルあなたを作成するときAddMinifiedを使用すると、ファイルが破損することなくファイルが縮小されていることを示すことができます(ファイルが提供されたときにはファイルは縮小されません)。

言い換えれば、angleの配列構文を使用する方がはるかに優れています。なぜなら、より小さなファイルが優れているからです。

+0

潜在的に有用な代替案をお寄せいただきありがとうございます。 – David

関連する問題