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

Quelle est la différence? J'ai une fonction $ (document) .ready qui devrait vérifier si extjs est chargé, mais le problème principal est que extjs ne se charge pas à l'heure et les choses à l'intérieur de $ (document) .ready commencent à s'exécuter, extjs create function qui produit l'erreur principale ' Ne peut pas exécuter create of undefined 'on Ext.create ("…", {..}); ligne. Si je fais double vérifier comme ceci:

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

Les choses fonctionnent magiquement. Maintenant, j'utilise ext-all.js qui a ~ 1,3 Mo minifié qui est assez grand imho … et les choses sont magiquement chargées alors qu'il fait le deuxième contrôle … mais je pense que ces 2 fonctions ne sont pas les mêmes qu'elles Les définitions suggèrent, car si je place une autre ligne $ (document) .ready à la place de Ext.onReady (), les choses se cassent à nouveau. Je pense Ext.onReady ({}); La fonction fait-elle une autre magie noire que $ (document) .ready () ne l'est pas, et je m'intéresse si quelqu'un sait quel est ce genre de magie?

Parce que ça marche et je ne sais pas pourquoi ce qui me tue.

Merci d'avoir lu le message. =) Ps. J'utilise ExtJS pour environ un jour, donc je suis très nouveau.

Non, ils ne sont pas les mêmes, le premier va proc lorsque votre bibliothèque jQuery est chargée, Ext.onReady (… va proc lorsque votre bibliothèque ExtJS est chargée.

Si vous voulez les combiner, vous pouvez faire quelque chose comme ceci:

 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(); }); 

Ils vérifient tous les deux quand le DOM est prêt. Si vous avez besoin d'Ext pour charger lors de l'utilisation de jQuery, essayez d'inverser la logique (ne savez pas si cela fonctionnera, n'a pas essayé).

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

Une autre question StackOverflow sur ce sujet: Extjs + jQuery ensemble