我将在我的 ExtJs 4.1 应用程序中添加一个插件。目前,我已将插件代码添加到我正在使用插件的文件之一中,并且一切正常。
或者,我可以将插件代码放在 JS 文件中,然后可以在我的应用程序中引用该文件。
但我想知道有没有办法在不明确引用的情况下包含插件?就像我们在 ExtJs 4.1 中加载控制器、存储等
我将在我的 ExtJs 4.1 应用程序中添加一个插件。目前,我已将插件代码添加到我正在使用插件的文件之一中,并且一切正常。
或者,我可以将插件代码放在 JS 文件中,然后可以在我的应用程序中引用该文件。
但我想知道有没有办法在不明确引用的情况下包含插件?就像我们在 ExtJs 4.1 中加载控制器、存储等
App.plugin.MyPlugin
没有标准做法,但在我看来,为插件(例如Ext.Loader
.
这是一个例子......
Ext.define("App.plugin.MyPlugin", {
/** Any explicit class properties and methods for functionality go here.
Eg. extending, aliasing, defining initComponent to add events, and
any other class-specific methods. */
},
function(){
Ext.ns("App.plugin");
App.plugin.MyPlugin = {}; // this is a global
var MyPlugin = App.plugin.MyPlugin;
/** You can modify the prototype here */
this.prototype.dateFormat = Ext.Date.dateFormat;
/** If you need to add functionality from some other class,
or Ext class, you can marge them here. In this example,
I am adding in the methods from Ext.util.Format */
Ext.apply(MyPlugin, Ext.util.Format);
/** Define methods which can be invoked from the global */
Ext.apply(MyPlugin, {
exampleRenderer: function(val){
return MyPlugin.ucfirst(val); // available via Ext.util.Format
}
});
});
现在您可以实例化插件类,还可以访问全局方法。例如,您可以通过exampleRenderer
在gridcolumn
渲染器中使用App.plugin.MyPlugin.exampleRenderer
.
要自动加载您的插件,您必须在“加载器”配置中定义命名空间的路径。例如,
Ext.Loader.setConfig({
enabled: true,
paths : {
'App.plugin': '/js/app/plugin/' // or however your folder structure is
}
});
/** then require it.. */
Ext.require([
'App.plugin.MyPlugin'
]);
您可能不想将这两个主体组合成一个类,但我只是想展示几种不同的方法来实现您的目标。