2013-11-28 11 views
6

मैं कैसेट का उपयोग कर रहा हूं जो जेएस को कम करने के लिए माइक्रोसॉफ्ट अजाक्स मिनीफायर का उपयोग करता है। यह मिनीफायर वैरिएबल का नाम बदलता है, जिसमें वेरिएबल का विशेष अर्थ होता है, जैसे $scope और $http। तो कैसेट मेरे कोणीय कोड तोड़ता है!मिनिफिकेशन मेरे एंगुलरजेएस कोड को तोड़ रहा है

मैं इसे कैसे रोक सकता हूं?

संदर्भ के लिए, यह कोणीय कोड है जो टूटा जा रहा है। $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 रोकने के लिए, आप नियंत्रकों परिभाषित करने के लिए सरणी सिंटैक्स का उपयोग करने के लिए है।

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 का उपयोग यह इंगित करने के लिए कर सकता है कि फ़ाइल को छोटा कर दिया गया है क्योंकि यह इसे तोड़ने के बिना हो सकता है (इसे सेवा के समय इसे छोटा नहीं किया जाएगा)।

कहा जा रहा है कि, कोणीय के सरणी वाक्यविन्यास का उपयोग करना बेहतर है क्योंकि छोटी फ़ाइलें बेहतर होती हैं!

+0

संभावित रूप से उपयोगी विकल्प के लिए धन्यवाद। – David

संबंधित मुद्दे