使用ExtJs5定义命名空间

时间:2014-11-24 13:38:46

标签: extjs extjs5

我正在使用ExtJs 5和SenchaCmd。

在一个包中,我在几个文件中定义了几个类,如下所示:

// Bar1.js
Ext.define('Foo.Bar1', {
   ...
});

// Bar2.js
Ext.define('Foo.Bar2', {
   ...
});

现在我想要"增强" Foo名称空间包含一些常用工具:

Ext.ns('Foo');
Foo.tool1 = function() { ... }
Foo.tool2 = function() { .... }
Foo.generalProp1 = 42;
(...)

什么是更好的地方和实践声明这样,以便Sencha编译器也嵌入这个文件?

是否可以"要求" (在某种程度上)我们需要一个类的命名空间?

1 个答案:

答案 0 :(得分:3)

您可以使用新的Ext:

中的statics
Ext.define('Foo', {
    // declare static members
    statics: {
        method: function(){ return "static method"; }
    }
});

// Define class under Foo namespace
Ext.define('Foo.OtherClass', {
    method: function(){ return "instance method"; }
});

// Create instance of Foo.OtherClass
var o = Ext.create('Foo.OtherClass');

// Use static member
console.log(Foo.method());

// Use instance member
console.log(o.method());

然后,您可以将Foo命名空间视为类,并将其放置为任何其他类。 那么显然你也可以要求这个命名空间,因为它也是类。