1

私は Dojo を使用しており、一部のページ ウィジェットはコードの外で HTML テンプレートで定義されています。this一部のフィールドが実際に定義されていることを JSDoc に伝えるにはどうすればよいですか?

SomePage.js

define([ "dojo/dom", "dojo/on", "dojo/_base/lang" ],
   function(dom, on, lang) {

      return {        
            init: function(){    
                on(this._myButton, "click", lang.hitch(this, this._foo));
            },

            foo: function(){
                //some code here
            }
      }            
   }
});

SomePage.html

<div>
    <div class="Button" data-dojo-attach-point="_myButton">
        Click me!
    </div>
</div>

このサンプルでは、​​JSDocthis._myButtonは未解決であることを警告しています。可視範囲では実際には定義されていませんが、実際には を介し​​て Dojo によって定義されることが保証されていdata-dojo-attach-pointます。JSDoc をオーバーライドしてthis._myButton、現在のモジュール用に定義されていると言うにはどうすればよいですか? (Webstorm IDE を使用)

4

1 に答える 1

1

私は同じ問題を抱えていましたが、現在は自動的にではなく、スタイル/規律によって「解決」されています。目の前にコードはありませんが、職場では次のようなウィジェットを作成しています。

define([
        "dojo/declare", 
        "dojo/dom",
        "dojo/on",
        "dojo/_base/lang",
        "dijit/_WidgetBase",
        "dijit/_TemplatedMixin",
        "dijit/_WidgetsInTemplateMixin",
        "dojo/text!./templates/myTemplate.html"
        "dijit/form/Button" // Instantiated in template
], function(declare, dom, on, lang, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin, template) {         
        return declare([_WidgetBase, _TemplatedMixin, WidgetsInTemplateMixin],{        
            templateString:template,    


            // Attachpoints
            _myButtonWidget:null,
            _someThingyNode:null,

            init: function(){    
                on(this._myButtonWidget, "click", lang.hitch(this, this._foo));
            },
            foo: function(){
                //some code here
            }
        });            
});

myTemplate.htmlように:

<div>
    <div data-dojo-type="dijit/form/Button" data-dojo-attach-point="_myButton">
        Click me!
    </div>
    <div data-dojo-attach-point="someThingyNode"><!-- Not a widget--></div>
</div>

主なポイントは、実行時に Dojo がプロパティを作成するのを待たずにプロパティを作成していることです。個人的な慣例として、添付された dijit は「Widget」で終わり、「vanilla」の添付ポイントは「Node」と名付けられます。

利点:

  1. 不要な警告が表示されないように、IDE を快適にします
  2. IDE がコード補完を提供できるようにします
  3. .jsファイルを読んでいる人に、アタッチポイントが存在することを通知します
  4. .html特にアタッチポイントが多い場合は、サブウィジェットを扱っているのかバニラ DOM ノードを扱っているのかを判断するために、テンプレートを参照し続ける必要はありません。
于 2013-09-10T03:25:26.643 に答える