2017-02-20 7 views
11

मैं AngularJS (v1.5) का उपयोग कर एक वेब अनुप्रयोग लिख रहा हूँ तो मैं कुछ नियंत्रकों है, और उन लोगों के नियंत्रकों में मैं अक्सर की तरह कुछ घोषणा कर रहा हूँ:JSHint का उपयोग करके 'इस' और सख्त मोड के बारे में चेतावनियां कैसे अक्षम करें?

function myController($someDirectives, ...){ 
    var ctrl = this; 
    // My code 
} 

बात है जब मैं अपने कोड JSHint, मैं नियंत्रकों में घोषित मेरे सभी 'इस' के लिए यह चेतावनी संदेश:

यदि फ़ंक्शन आमंत्रण का उपयोग करके सख्त मोड फ़ंक्शन निष्पादित किया जाता है, तो इसका 'यह' मान अपरिभाषित होगा।

मुझे यह तय करना होगा कि मेरी .jshintrc फ़ाइल में, मैंने "strict":false सेट किया है। क्या कोई यह जानता है कि इस संदेश को विशेष रूप से कैसे अक्षम किया जाए?

अग्रिम धन्यवाद।

+0

मैं एक स्थिति का परीक्षण करने में नहीं हूँ, लेकिन मुझे लगता है, यदि आप MyController को समारोह का नाम बदलने, यह तो एक निर्माता समारोह के रूप में मान्यता प्राप्त है और उस त्रुटि नहीं दी जाएगी। उसे एक शॉट दो। – Ken

+0

मुझे एक ही समस्या है। मामले में, प्रश्न में रिकर्सिव फ़ंक्शन 'this' को functionName.call के माध्यम से पारित किया जा रहा है। –

+1

दरअसल, केन का सुझाव काम करता प्रतीत होता है। मेरे लिए, मेरे .jshintrc में "वैधता" जोड़ने के लिए यह और अधिक आसान है: सत्य। – NathanL

उत्तर

15

.jshintrc फ़ाइल

{ 
    "validthis": true // Tolerate using this in a non-constructor 
} 
+0

यही वह था जिसे मैं ढूंढ रहा था। धन्यवाद। – NathanL

0

मैं एक ही समस्या हो रही है में विन्यास की स्थापना की। मैं "indirect invocation" कर रहा हूं, प्रश्न में फ़ंक्शन के साथ, "फ़ंक्शन आमंत्रण" नहीं, और 'यह' फ़ंक्शन बॉडी में कई बार संदर्भित किया जाता है।

मेरे मामले में, मुझे इनमें से बहुत सारी "त्रुटियां" थीं जो मेरी पूरी लिपि स्कैन करने से पहले जेएसआईंट छोड़ दी गई थीं।

इस मैं अपने स्क्रिप्ट फ़ाइल के शीर्ष पर डाल चारों ओर पाने के लिए:

/*jshint maxerr: 10000 */ 

यह त्रुटियों को दबाने नहीं था, लेकिन कम से कम यह मेरे पूरे के JSHint के विश्लेषण देखने के लिए नीचे स्क्रॉल करने की अनुमति दी स्क्रिप्ट।

2

आप कोड-ब्लॉक यानी jshint options को हमेशा ओवरराइड कर सकते हैं।

/* jshint validthis: true */ 
संबंधित मुद्दे