我有一个使用 EXTJS4 MVC 结构的带有商店的图表,我通过另一个 javascript 文件从在线 api 获取数据,我想知道是否可以从外部将数据添加到商店,以便在我调用 store.load( )。
外部js不是extjs或mvc的一部分,它运行在我图表后面的页面上。我是否必须将所有逻辑转移到 extjs 控制器中?有没有办法从外部 js 调用 extjs 方法?谢谢。
我有一个使用 EXTJS4 MVC 结构的带有商店的图表,我通过另一个 javascript 文件从在线 api 获取数据,我想知道是否可以从外部将数据添加到商店,以便在我调用 store.load( )。
外部js不是extjs或mvc的一部分,它运行在我图表后面的页面上。我是否必须将所有逻辑转移到 extjs 控制器中?有没有办法从外部 js 调用 extjs 方法?谢谢。
确实有一些方法可以从 ExtJS 特定代码之外调用 ExtJS 对象上的方法,毕竟它只是 JS。
您将需要从您的 ExtJS 代码中公开一个方法,该方法返回一个引用来说明图表,类似于以下内容(在 ExtJS 代码中):
function getChart() {
return Ext.getCmp('myChartID');
}
然后在您的外部 JS 中,您可以执行以下操作:
var data = ...; // This is where you can get your external data
var chart = getChart();
chart.load(data);
这取决于从 ExtJS 公开方法的能力,因此您需要能够引用。
尝试调用该方法从 ExtJS MVC 应用程序中检索数据可能会更容易。如果加载了您的外部 JS 文件,它可能会返回对自身的引用,您可以调用它的方法。因此,考虑到这一点,只需从 ExtJS 应用程序中调用您需要的方法作为替代方法。
最终使用以下内容访问本地 js 文件。
var url = "url.js";
var onload = function () {
console.log('url loaded');
};
var onerror = function () {
console.log('error loading analytics functions');
};
Ext.Loader.injectScriptElement(url, onload, onerror, scope);
确保在您的 app.js 中启动 Ext.Loader,如下所示:
Ext.Loader.setConfig({enabled:true});