2017-03-20 12 views
0

私のプロジェクトでdojo 1.9を使用しています。私は、私が使用するdijitsごとに "id"を与えるアプローチに従っています。例:dojoウィジェットに「id」を付けるのがよい方法ですか?

var cp = new dijit.layout.ContentPane({\ 
id:"myContentPane", 
content:"Test" 
}); 

idを割り当てるのは良い方法ですか? 理由はありません たとえば、新しいコンテンツでcpをリロードする場合は、cpがすでに作成されているかどうかを確認する(idで)を確認します。はいの場合はコンテンツを設定し、作成しない場合は作成します。したがって、上記のコードでは、私はdijitのが既に作成されているかどうかチェックするためにIDを使用

if(!dijit.byId("myContentPane"){ 
var cp = new dijit.layout.ContentPane({\ 
id:"myContentPane", 
content:"Test" 
}); 
}else{ 
dijit.byId("myContentPane").set("content","new content"); 
} 

に変更されます。非常にまれに、私はdijitを破壊するためにidを使用します。

よろしく、 まんじゅう

答えて

0

私はユニークな理由で、あなたのウィジェットを識別するために、常に良いアイデアだと思いますが、次のとおりです。

  • あなたは簡単かつ簡潔な方法でdijit/registryを使用して、ウィジェットを取得することができますDOMに問い合わせることなく。使い方の

例:非常に個人的な選択である

require(["dijit/registry"], function(registry){ 
    var widget = registry.byNode(domNode); 
}); 
+0

多かれ少なかれ今日。回答をありがとう –

+0

@ManjunathaMuniyappaこんにちは、あなたが私の答えを受け入れることを忘れないでください私の答えを見つける場合は、その左側にチェックマークと上矢印アイコンをクリックしてください:)。ありがとうございました – GibboK

1


しかし、複数の独立したdojoモジュールで構成される複雑な単一ページアプリケーションでは、IDは非常に脆弱です。
私が働いているプロジェクトでは、私はそれらを完全に禁止し、代わりにアタッチポイント、クラスプロパティ、ウィジェットAPIに依存しています。

あなたの例では、私はvar cp = new dijit.layout.ContentPane({がウィジェットであると仮定します。 は、だから私はどうなる:

_setContentAttr: function(content) { if(!this._contentPane) { this._contentPane = new dijit.layout.ContentPane({content: content}); } else { this._contentPane.set('content', content); } }

私はIDに頼ることはありません。この道を。

結論は:あなたのプロジェクトとその複雑さによって異なります。

  • 単純なプロジェクトでは、なぜIDを使用しないのですか。
  • 複雑なものでは、脆くなりすぎていない方がいいでしょう。

ところで、道場1.9使用AMDとして、あなたはまた、「dijit.layout.ContentPane」を使用して回避し、むしろ変数を使用する必要があります。これは私が私のdijitsにアクセスする方法である

require(["dijit/layout/ContentPane"], function(ContentPane){ var cp = new ContentPane(); });

+0

答えをありがとうと私はそれが好きでした。ちなみに、複数のcontentPane(複数のTabContainerを持つ場合)はどう扱うでしょうか?私のケースでは、約12個のコンテンツペインを持つタブコンテナを持っています –

+0

ハッシュマップで配列に格納できます。彼らはおそらくすべて機能的な意味を持っているので、 '' {user:CP1、settings:CP2、notifications:CP3} '' – ben

関連する問題