2013-08-09 5 views

答えて

10

実はあなたはそれが@firesのような他のイベント関連タグと統合して、適切なイベントタイプを文書化する@eventタグを使用したほうが良いだろうと@typedefではなく、@listensです。あなたが望むディテールのレベルに応じて、それらの名前を空けることさえできます。ここでは基本的なことがあります - jQueryを使用しているように、これを書くつもりです。ちょっとだけコードを単純化するためです。

感覚(またはウィンドウを作るかもしれない、あなたが「文書」を使用して、ネイティブのイベントタイプを文書化しようとしているので、などいくつかの名前空間、クラス、名前、にイベントタイプを添付したいと思う一般

、またはグローバル、またはネイティブ、または何でもあなたが好き)

/** 
* @namespace document 
*/ 

あなたが望んでいた場合、あなたもより細かく取得し、何か

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

などを行うことができます。しかし、この議論のために、私達はちょうどよ01と固執する。

マウスイベントには多くのプロパティがありますが、気になるイベントは実際には必要です。ここではjQueryのイベントを扱うときに最も頻繁に使用されるプロパティのいくつかを定義しと呼ばれる汎用のtypedefがあります:

/** 
* @typedef {{ 
* target: element, 
* which: number, 
* pageX: number, 
* pageY: number, 
* clientX: number 
* clientY: number 
* }} 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 
*/ 

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

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

あなたは、各イベントの同じ性質を気にしないと仮定すると、これらのイベントとそのプロパティを定義する別の方法、このような何かをすることです別のドックレットのイベントを参照するには、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

恐ろしい、AGESのこの説明を探していた。どうもありがとう! – sidneys

関連する問題