2013-08-09 6 views

उत्तर

10

वास्तव में आप के रूप में यह @fires और जैसे अन्य घटना से संबंधित टैग के साथ एकीकृत करता है, उचित घटना प्रकार दस्तावेज़ के लिए @event टैग का उपयोग कर बेहतर होगा @listens इस तरह से @typedef नहीं है। आपके इच्छित विवरण के स्तर के आधार पर, आप उन्हें नामस्थान भी दे सकते हैं। यहां मूल बातें हैं - मैं इसे लिखने जा रहा हूं जैसे कि आप jQuery का उपयोग कर रहे हैं, बस कोड को थोड़ा और सरल बनाने के लिए।


आम तौर पर आप का उपयोग कर "दस्तावेज़" भावना (या खिड़की बना सकता है, कुछ नाम स्थान, वर्ग, नाम, आदि के लिए घटना प्रकार संलग्न करने के लिए आप एक देशी घटना प्रकार दस्तावेज़ के लिए कोशिश कर रहे हैं के बाद से चाहते हैं, या जाएगा वैश्विक या स्थानीय, या जो कुछ भी आप की तरह)

/** 
* @namespace document 
*/ 

यदि आप चाहते हैं तो आप भी विस्तृत रूप से मिलता है और तरह

/** 
* @namespace root.events.mouse 
*/ 

कुछ कर सकते हैं लेकिन इस चर्चा के लिए, हम सिर्फ हूँ 01 के साथ छड़ी।

माउस घटनाओं में बहुत सारी संपत्तियां होती हैं, लेकिन आपको वास्तव में केवल उन लोगों को दस्तावेज़ करने की आवश्यकता होती है जिनकी आप परवाह करते हैं। यहाँ एक सामान्य typedef कहा जाता है कि गुण सबसे अक्सर इस्तेमाल किया जब jQuery की घटनाओं से निपटने के कुछ परिभाषित करता है:

/** 
* @typedef {{ 
* target: element, 
* which: number, 
* pageX: number, 
* pageY: number, 
* clientX: number 
* clientY: number 
* }} mouseEventParams 
*/ 

अब हम प्रलेखित किए गए डेटा की किस तरह एक माउस घटना में होना चाहिए, इसलिए हम अलग घटना परिभाषित कर सकते हैं अब टाइप करें और सुनिश्चित करें कि उनकी गुणों को खुद को दोहराए बिना दस्तावेज किया गया है। आप इंगित करते हैं कि यह नाम नामस्थान को पहले घोषित करके उचित नामस्थान का हिस्सा है, फिर '#', फिर ईवेंट का नाम।

/** 
* Mousedown Event 
* @event document#mousedown 
* @type {mouseEventParams} 
*/ 

/** 
* Mouseup Event 
* @event document#mouseup 
* @type {mouseEventParams} 
*/ 

इन घटनाओं और उनके गुणों को परिभाषित करने के एक वैकल्पिक तरीका है, तो आप यह सोचते हैं प्रत्येक घटना के लिए एक ही गुणों के बारे में परवाह नहीं है, इस तरह कुछ करने के लिए होगा:

/** 
* Mousedown Event 
* @event document#mousedown 
* @type {object} 
* @property {element} target 
* @property {number} which 
*/ 

/** 
* Mouseup Event 
* @event document#mouseup 
* @type {object} 
* @property {number} pageX 
* @property {number} pageY 
* @property {number} clientX 
* @property {number} clientY 
*/ 

अगर आप चाहते हैं किसी अन्य दस्तावेज़ में किसी ईवेंट को संदर्भित करने के लिए, आपको यह पता होना चाहिए कि JSDoc केवल ईवेंट के लिए नामस्थान के प्रकार के रूप में कार्य करने के लिए प्रत्येक ईवेंट नाम पर स्ट्रिंग event: को स्ट्रिंग करता है। इसका मतलब यह है कि और @listens के मामले में, event: नामस्थान के रूप में, अन्य दस्तावेज़ों से ईवेंट का जिक्र करते समय आपको "नेमस्पेस" शामिल करने की आवश्यकता है।

// Notice the inclusion of 'event:' between '#' and 'mousedown' on `@param` 
// But you don't need it on 'listens' 
/** 
* Handles mousedown events 
* @param {document#event:mousedown} event 
* @listens document#mousedown 
*/ 
var someMouseHandler = function (event) { 
    console.log("mousedown event: ", e); 
} 

// Again, you don't need to include 'event:' for the `@fires` tag 
/** 
* Triggers a mouseUp event 
* @param {element} element 
* @fires document#mouseup 
*/ 
var triggerMouseUp = function (element) { 
    $(element).trigger('mouseup'); 
} 
+1

बहुत बढ़िया, एजीईएस के लिए इस स्पष्टीकरण की तलाश में है। आपका बहुत बहुत धन्यवाद! – sidneys

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