web-dev-qa-db-ja.com

Ext.onReady()と$(document).ready()

違いは何ですか? $(document).ready関数があり、extjsがロードされているかどうかを確認する必要がありますが、主な問題は、extjsが時間どおりにロードされず、$(document).ready内のものが実行を開始し、extjsがメインエラーを生成する関数を作成することです。 Ext.create( "..."、{..});で未定義の作成を実行できません。ライン。私がこのように再確認した場合:

$(document).ready(function() {
    Ext.onReady(function() {
        Ext.create('Ext.Button', {...});
    });
});

物事は魔法のように機能します。今私はext-all.jsを使用していますが、これはかなり大きなimhoです...そして彼が2番目のチェックをしている間に物事が魔法のようにロードされます...しかしこれらの2つの関数はそれらと同じではないと思いますExt.onReady()行の代わりに別の$(document).readyを置くと、事態は再び壊れるので、定義は示唆しています。 Ext.onReady({});だと思います。関数は$(document).ready()がしない他のいくつかの黒魔術を行います、そして誰かがこの種の魔法が何であるか知っているかどうか私は興味がありますか?

それはうまくいき、なぜ私を殺しているのか分かりません。

投稿を読んでいただきありがとうございます。 =)ps。私はExtJSを約1日使用しているので、かなり新しいです。

8
user1127302

いいえ、それらは同じではありません。最初のものはjQueryライブラリがロードされると処理され、Ext.onReady(..はExtJSライブラリがロードされると処理されます。

それらを組み合わせたい場合は、次のようなことができます。

var extReady = false;
var jQueryReady = false;

var librariesReady = function () {
    if (jQueryReady && extReady) {
        //They're both ready
    }
};

$(document).ready(function () {
    jQueryReady = true;
    librariesReady();    
});
Ext.onReady(function () {
    extReady = true;
    librariesReady();
});
21
Johan Haest

どちらも、DOMの準備ができたことを確認します。 jQueryの使用時にExtをロードする必要がある場合は、ロジックを逆にしてみてください(機能するかどうかわからない、試していません)。

Ext.onReady(function() {
    $(document).ready(function() {
        Ext.create('Ext.Button', {...});
    });
});

このテーマに関する別のStackOverflowの質問: Extjs + jQuery一緒に

0
jfvoliveira