2016-06-01 4 views
0

ウィジェットを破棄する方法はありますが、ウィジェットが接続されたDOMノードは保持されますか?私はIdでこのノードにこのウィジェットが接続されているルートノードを保持している間にウィジェットを破壊するにはどうすればいいですか?

new someWidget({}, 'app'); 

などのウィジェットを添付して、私は私が破壊呼び出すその後

<body> 
    <div id="app" widgetid="app"> 
    </div> 
</body> 

のようなものを取得する場合たとえば、私はdivの

<body> 
    <div id="app"> 
    </div> 
</body> 

を持っていますこのようなウィジェット

var mywidget = registry.byId("app"); 
mywidget.destroy(); 

私は最終的に

<body> 
</body> 

ウィジェットが添付されたdiv全体が消えます。しかし、私が本当に望んでいるのは、ウィジェットを破棄して、それが添付された元のdivを保持することです。

方法はありますか?

答えて

1

これについては、2つの方法があります。まず、data-dojo-attach-pointを使用し、domConstruct.placeを使用してウィジェットノードを配置します。これによりウィジェットノードがターゲットに追加され、ウィジェットはターゲットノードの子になります。その後、ウィジェットを破棄すると、ウィジェットを配置したメインノードは破棄されません。

<body> 
<div data-dojo-attach-point="app"></div> 
</body> 


var myWidget= new someWidget(); 
domConstruct.place(myWidget.domNode, this.app); 

第2に、myWidget.destroy(true)を使用します。詳しくは__WidgetBase destroy()のこちらのドキュメントをご覧ください。渡された引数はpreserveDom属性を参照し、デフォルトではfalseです。それは本当です、そして元のDOM構造は保存されます。ソースページから引用:

trueの場合、このメソッドは元のDOM構造体をそのまま残します。注:これは_TemplatedMixinウィジェットではまだ動作しません

関連する問題