मुझे लगता है कि जेएसहिंट आपको वैश्विक चर से बचने के लिए यहां बताने की कोशिश कर रहा है (जो स्पष्ट रूप से एक बहुत अच्छा अभ्यास है!)।
एंगुलरजेएस की एक ही समस्या को हल करने के बारे में थोड़ा अलग राय है (यानी - वैश्विक चर से परहेज करना) और आपको मॉड्यूल में नियंत्रकों को परिभाषित करने की अनुमति देता है (वैश्विक angular
नामस्थान का उपयोग करके)। आप इस तरह के मॉड्यूल का उपयोग कर अपने उदाहरण पुनर्लेखन सकता है: http://jsfiddle.net/t3vBE/1/
इस दृष्टिकोण आप नियंत्रक निर्माताओं के साथ ग्लोबल नेमस्पेस को दूषित नहीं कर रहे हैं के साथ:
angular.module('myApp',[]).controller('webAddressController', function($scope) {
// Do things
});
यहाँ jsFiddle व्यवहार में यह दर्शाता हुआ है।
यदि आप सख्त मोड का उपयोग करना चाहते हैं तो आपको angular
वैश्विक चर की अनुमति देने के लिए JSHint कॉन्फ़िगरेशन को बदलने की आवश्यकता होगी। वैकल्पिक रूप से आप भी अपने पूरे कोड (एक बार फिर से, मॉड्यूल का उपयोग करके) लपेट सकता है एक समारोह में कहा कि imediatelly निष्पादित हो जाता है:
(function() {
"use strict";
angular.module('myApp',[]).controller('webAddressController', function($scope) {
$scope.name = 'World';
// Do things
});
}());
यहाँ jsFiddle है: http://jsfiddle.net/t3vBE/4/
मेरे लिए यह समझ में आता है केवल यदि आप चाहते हैं शुद्ध जावास्क्रिप्ट, "सहायक" कार्यों को परिभाषित करें, अन्यथा मैं AngularJS सेवाओं पर भरोसा करता हूं।
स्रोत
2012-10-18 17:42:00
द्वारा उत्पन्न किए गए किसी भी विचार पर आधारित है, मैं किसी भी आईआईएफई में 'सख्त उपयोग' घोषणा के साथ अपने सभी कोणीय कोड को लपेटने का कार्य कैसे स्वचालित कर सकता हूं? (मैं grunt का उपयोग कर रहा हूँ) –
@FlorianF मैं व्यक्तिगत रूप से वेबस्टॉर्म –
में लाइव टेम्पलेट का उपयोग करता हूं। जिशिंट चेतावनी वैश्विक चर को रोकने के लिए बिल्कुल नहीं है, बल्कि वैश्विक "सख्त उपयोग" की एक समान समस्या को रोकने के लिए है। यदि आप फ़ाइलों को एक साथ जोड़ते हैं (एक सामान्य निर्माण चरण) शीर्ष-स्तर "सख्त उपयोग" सभी निम्न फ़ाइलों पर लागू होगा (भले ही वे jshint के अनुरूप नहीं लिखे गए हों।) फ़ंक्शन फॉर्म केवल उस फ़ंक्शन पर jshint को सीमित करता है। –