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

8 javascript jquery dom extjs extjs4

有什么不同?我有$(document).ready函数,它应检查extjs是否已加载,但主要问题是extjs没有按时加载,$(document).ready内部的东西开始执行,extjs create function产生主错误'无法在Ext.create("...",{..})上执行undefined'的创建; 线.如果我像这样进行双重检查:

$(document).ready(function() {
    Ext.onReady(function() {
        Ext.create('Ext.Button', {...});
    });
});
Run Code Online (Sandbox Code Playgroud)

事情神奇地起作用.现在我正在使用ext-all.js,它有~1.3MB的缩小,这是非常大的imho ......当他进行第二次检查时,事情变得神奇地加载......但我认为这两个函数不同于它们定义建议,因为如果我放入另一个$(document).ready而不是Ext.onReady()行,事情就会再次破裂.我想Ext.onReady({}); 函数做了一些其他黑魔法,$(document).ready()没有,如果有人知道这种魔法是什么,我很感兴趣?

因为它有效,我不知道为什么会杀了我.

感谢阅读帖子.=)ps.我正在使用ExtJS大约一天,所以我对它很陌生.

Joh*_*est 21

不,它们不一样,第一个将在你的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();
});
Run Code Online (Sandbox Code Playgroud)

  • 你比我快:)好一个+1(你可能会提到脚本的加载顺序,因为这可能也会产生错误) (2认同)