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

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

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

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

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

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

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

他们都检查DOM何时准备就绪。 如果在使用jQuery时需要加载Ext,请尝试反转逻辑(不知道它是否可行,还没试过)。

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

关于这个主题的另一个StackOverflow问题: Extjs + jQuery在一起