0

我将在我的 ExtJs 4.1 应用程序中添加一个插件。目前,我已将插件代码添加到我正在使用插件的文件之一中,并且一切正常。

或者,我可以将插件代码放在 JS 文件中,然后可以在我的应用程序中引用该文件。

但我想知道有没有办法在不明确引用的情况下包含插件?就像我们在 ExtJs 4.1 中加载控制器、存储等

4

1 回答 1

0

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

现在您可以实例化插件类,还可以访问全局方法。例如,您可以通过exampleRenderergridcolumn渲染器中使用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'
]);

您可能不想将这两个主体组合成一个类,但我只是想展示几种不同的方法来实现您的目标。

于 2013-08-28T13:51:13.917 回答