alternateClassNames的用途

时间:2011-08-19 13:59:49

标签: extjs extjs4

所以,int ExtJS我们有:

  • “真实”类型名称(在Ext.define中作为第一个参数的那个)
  • 别名
  • alternateClassName
  • 的xtype

对我来说最神秘的是alternateClassName。 如果我们已经拥有类型描述符的动物园,为什么我们真的需要它们呢? 请注意,我不是要讨论意识形态方法的质量。 问题只是关于为什么实施这个问题以及确切目的是什么。

3 个答案:

答案 0 :(得分:8)

它们用于向后兼容。例如,ExtJS 4中的Ext.grid.Panel具有

alternateClassName: ['Ext.list.ListView', 'Ext.ListView', 'Ext.grid.GridPanel']

因为它取代了ListView并且曾经被命名为Ext.grid.GridPanel。

答案 1 :(得分:2)

据我所知,alternateClassName有助于调用一个具有不同名称的类,我们可以根据类名使用这些操作。

以下代码对您有所帮助:

Ext.define('Sample', {    
    alternateClassName: ['Example', 'Important'],     
    code: function(msg) {        
        alert('Sample for alternateClassName... ' + msg);     
    },
    renderTo :document.body
});
var hi = Ext.create('Sample');
hi.code('Sample');
var hello = Ext.create('Example');
hello.code('Example');
var imp = Ext.create('Important');
imp.code('Important');

在上面的代码中,您可以找到类似的内容:

1.我们正在使用三个名为Sample,Example,Important的名称 2.我们可以根据班级名称使用动作即警报信息 3.我们正在显示基于类名的警报消息。我们正在显示警告消息以显示结果。但是我们可以根据类名编写一些操作,如果我们想创建一个按钮,我们需要按照类名对按钮执行操作,这将有所帮助。

您可以在下面找到工作示例:

http://jsfiddle.net/kesamkiran/kVbra/30/

答案 2 :(得分:0)

<强>别名

别名由命名空间和由句点连接的名称组成[命名空间]。[name]

由于命名空间,其用法仅限于上下文,例如:小部件,商店,控制器等(例如,对于控制器派生类,您可以使用类似&#34; controller.foo&#34;这样的别名,现在您只能在连接控制器时使用&#34; foo&#34;名称(视图)

<强>的xtype

仅适用于Ext.Component派生类

在定义视图时很有用,因为你写的代码少了

<强> alternateClassName

比上面两个更通用。您可以将它用于实用程序类,因此您不必引用整个命名空间

对于用于存储声明为 app.util.navigationConstants 的常量的单例类,可以定义更短的替代类名NavConsts。您现在可以使用NavConsts.CONST_NAME而不是app.util.navigationConstants.CONST_NAME