我可以使用Ext的加载器动态加载非ext脚本/对象吗?

Bri*_*ian 8 extjs4

在我的ExtJS 4.0.7应用程序中,我有一些第三方javascripts,我需要动态加载以呈现某些面板内容(一些花哨的图表/可视化小部件).

在我尝试使用它之前,我遇到了脚本未完成加载的古老问题.我认为ExtJS可能有一个优雅的解决方案(很像类加载器:Ext.Loader).

我看过Ext.Loader和Ext.ComponentLoader,但似乎都没有提供我正在寻找的东西.我是否必须"自己滚动"并设置计时器以等待标记变量存在?

Joe*_*way 11

以下是ExtJS 4.1.x中如何完成的示例:

Ext.Loader.loadScript({
    url: '...',                    // URL of script
    scope: this,                   // scope of callbacks
    onLoad: function() {           // callback fn when script is loaded
        // ...
    },
    onError: function() {          // callback fn if load fails 
        // ...
    } 
});
Run Code Online (Sandbox Code Playgroud)


Mol*_*Man 5

我看过Ext.Loader和Ext.ComponentLoader,但似乎都没有提供我正在寻找的东西

真的看起来是真的.我认为唯一可以帮助你的是Loader的injectScriptElement方法(但是,它是私有的):

var onError = function() {
  // run this code on error
};
var onLoad = function() {
  // run this code when script is loaded
};
Ext.Loader.injectScriptElement('/path/to/file.js', onLoad, onError);
Run Code Online (Sandbox Code Playgroud)

似乎这种方法会做你想要的(这里是例子).但唯一的问题是,......你知道,这个方法被标记为私有.