2013-02-07 14 views
7

1)HTMLを既に作成されたパネルまたは他の要素に設定するにはどうすればよいですか?extjsの要素にhtmlを設定する方法

私は初心者です。私は、HTML内の一部のコンテンツを設定するには、以下を試みた

var clickedElement = Ext.getCmp('id').el.child('>'); 
clickedElement.setHTML("hello"); 

上記細かい作業が、問題は、パネルは、内部に多くのdivのを持っているよう...上記のアプローチは、それらの内部のhtmlを消去していることである(すなわちDIVさん)上記の内容に置き換えてください。

Chromeには、パネルに3つの入れ子divがあることがわかりました。私はそれにHTMLを追加したいのであれば、私は以下のようなものを与える必要がある:

var clickedElement = Ext.getCmp('id').el.child('>').child('>'); //two times child 

は、私は上記のアプローチを試みたとき、私は成功したHTMLコンテンツを追加していとものdivのは削除されません。ここでの問題は、追加されたコンテンツが表示されないことです(既定のスタイル設定が原因でChromeコンソールにコンテンツが追加されていることがわかります)。

効率的な方法があるかどうかを尋ねていますパネルにHTMLを追加する私の意見では、これは私がここで複雑にしている非常に簡単なアプローチでなければなりません。

2) Elementに特定の子があるかどうかを確認するにはどうすればよいですか?

たとえば、作成中にextjs Buttonを子パネル(アイテム)として追加したとします。 (私はそれを行うことができます)。パネルに特定の要素(ここではボタン)があるかどうかを確認する方法

ここで質問する前に、私はたくさんのものを探して、幾分親切ではあるが役に立たなかったのは私の問題でlinkでした。

答えて

13

ExtJSでは、ほとんどのコンポーネントはdomでさらに表示されていても、body要素が1つしかないと見なされます。基本的にマークアップの上に追加されるjQueryとは異なり、ExtJSはマークアップ全体を単独で生成します。あなたは、単にその

Ext.getCmp('id').update('hello'); 

ようupdate()メソッドを呼び出すことができますコンポーネントのHTMLを更新するには、あなたの質問に今

、代わりにコンポーネントにidを設定しないでくださいJSFiddle

+0

ありがとうございました。また、このポストで私の2番目の質問への答えを与えてください.. –

+1

@それはあなたがコンポーネントではなく、DOM内の要素を探します。 Ext.getCmp( 'id')のように。down( 'button [text = enter]'); – sra

+0

ok ..あなたが言及したように私はupdate()を使用しましたが、これは私の投稿で言及したものと同じように動作します、 'var clickedElement = Ext.getCmp( 'id')。 clickedElement.setHTML( "hello"); 'これは、内部の' div'をあまりにも削除しています。今、私がhtmlを手に入れようとすると、私のコード全体が乱れてしまいます。いくつかの要素はネストされたdiv(つまり内容が変更された要素)を持たず、残りの部分に入れ子divがあるため –

1
Ext.ComponentQuery.query('#itemIdOfComponent').update('new value'); 

を参照してください。 itemId設定を追加し、Ext.ComponentQuery.queryのドキュメントを参照してください。

関連する問題