27

DojoToolkitは初めてです。エラーが発生します

Tried to register widget with id=myButton but that id is already registered

dojoコンテンツを2回ロードしようとするときはいつでも(つまり、jQuery.Loadを介してHTMLコンテンツをコンテナーdivにロードします)。すでに登録されているウィジェットをdojoで登録解除する方法はありますか?いくつかの例を見てきましたが、実際には機能していません。

私のボタン:

<button dojoType="dijit.form.Button" id="myButton">button</button>
4

4 に答える 4

38

特定のウィジェットの登録を解除する場合は、それらのdestroy() またはdestroyRecursive()メソッドを使用できます。2つ目は、破棄するウィジェット内のウィジェットを破棄します(つまり、フォームウィジェットでdestroyRecursiveを呼び出すと、すべてのフォームコンポーネントも破棄されます)。

あなたの場合、あなたの最善の策は前にこれを行うことであるように思われますjQuery.load-

var widgets = dijit.findWidgets(<containerDiv>);
dojo.forEach(widgets, function(w) {
    w.destroyRecursive(true);
});

上記のコードは、のすべてのウィジェットの登録を解除し<containerDiv>、関連するDOMノードを保持します。DOMノードを破棄するには、代わりにに渡しfalseますdestroyRecursive

参照:

http://dojotoolkit.org/api/1.3/dijit/_Widget/destroyRecursive

于 2010-05-04T09:30:22.010 に答える
10

http://bugs.dojotoolkit.org/ticket/5438に基づいて、dojo-widgetsを破壊する十分な方法を見つけました。

dijit.registry.forEach(function(w){
                  w.destroy();             
          });
于 2010-05-04T09:16:08.083 に答える
5

これは私のために働いた:

dijit.byId( 'myButton' ).destroy( true );
于 2012-05-08T14:18:55.397 に答える
1

ボタンからIDを削除し、アタッチポイントを使用してアクセスする方がよいと思います。あなたは基本的にします<button dojoType="dijit.form.Button" data-dojo-attach-point="myButton">button</button>

次に、コードでアクセスしthis.myButton....ますが、使用しているdojoのバージョンがわかりません。dojoは一意のIDを自動的に割り当てるため、これによりIDの問題が修正されます。

于 2015-08-08T15:27:38.467 に答える