6

Ext 要素の dom の innerHTML を直接更新するのではなく、Extjs の update() メソッドを使用するパフォーマンス、信頼性、ベスト プラクティスの方法について質問があります。

次の 2 つのステートメントを検討してください。

Ext.fly('element-id').dom.innerHTML = 'Welcome, Dude!';

Ext.fly('element.id').update('Welcome, Dude!', false);

スクリプトを作成する必要はありません。ブラウザの癖を考慮に入れてeval()いると確信しています。update()


また、次を使用しているかどうかは誰にもわかりますか?

Ext.fly('element-id').dom.innerHTML

と同じです

d.getElementById('element-id').innerHTML

?
ブラウザとプラットフォームの互換性は重要であり、2 つが基本的に同じである場合は、おそらくExt.element.dom.innerHTML完全に捨てるupdate()ことが最善の解決策になるでしょう。

よろしくお願いいたします。

ブライアン

4

2 に答える 2

4

更新されたhtmlにスクリプトを動的にロードしたり、更新後にコールバックを処理したりする必要がない場合は、概説した2つの方法は同等です。のコードの大部分はupdate()、スクリプトの読み込み機能とコールバック機能を追加します。内部的には、コンテンツの置換を行うようにinnerHTMLを設定するだけです。

Ext.fly().domプレーンなDOMノードを返すので、そうです、それはgetElementById()それが指すノードに関しての結果と同等です。理解すべき唯一の微妙な点は、Ext.fly()とExt.get()の違いです。Ext.fly()は、ノードラッパーオブジェクトの共有インスタンス(フライウェイト)を返します。そのため、内部Extコードを含む他のコードがExt.fly()を呼び出す場合、そのインスタンスは後で舞台裏で別のノードを指す可能性があります。そのため、Ext.fly()の呼び出しの結果は、アトミック操作にのみ使用する必要があり、長期間有効なオブジェクトとして再利用することはできません。 Ext.get().dom一方、新しい一意のオブジェクトインスタンスを返します。その意味では、getElementById()のようになります。

于 2010-01-22T07:33:22.277 に答える
2

あなたは自分の質問に答えたと思います: 「ブラウザとプラットフォームの互換性は重要です。2 つが基本的に同じである場合、update() のために Ext.element.dom.innerHTML を完全に捨てることがおそらく私の最善の解決策でしょう。」 JS ライブラリは、(部分的に) ブラウザの違いを抽象化することを目的としています。アップデートは一例です。

@bmoeskau が上に書いたように、 update() は、現在の問題には必要のない追加機能を提供します。それにもかかわらず、更新は良い選択です。

于 2010-01-22T16:59:51.230 に答える