Ext JS - 如何从ViewModel中获取应用程序的名称?

时间:2015-07-10 17:46:11

标签: javascript extjs extjs5

我的Dr. Evil应用程序name定义为DrEvil

Ext.define('DrEvil.Application', {
    extend: 'Ext.app.Application',

    name: 'DrEvil',

    stores: [
        // TODO: add global / shared stores here
    ],

    launch: function () {
        // TODO - Launch the application
    }
});

在我的视图模型中,有没有办法检索此名称?我希望像Ext.app.name这样的东西会把它拉起来,但它会变空。我一直在迭代ExtExt.app等属性,似乎无法找到它。

这可能是一件非常微不足道的事情,它让我看起来很正面,但我做了 ExtJS的谷歌N变种获取视图模型中的应用程序名称,但没有任何相关内容。

我试图说服公司购买ExtJS的Eclipse插件!可能在一秒钟内回答这个问题。

3 个答案:

答案 0 :(得分:4)

如果您不了解应用程序,那么它实际上并不明显。

这是通用代码,可以执行您想要的操作:

var name = Ext.app.Application.instance.getName();

或者在ExtJS的最新版本中:

var name = Ext.getApplication().getName();

答案 1 :(得分:1)

您正在寻找应用程序命名空间。

class Device {}
class Router extends Device {}

class GenericDAO<T, ID extends Serializable> {
  protected Class<T> persistentClass;
  protected Class<ID> idClass;

  private GenericDAO() {
    Class<?>[] typeArguments = TypeResolver.resolveRawArguments(GenericDAO.class, getClass());
    this.persistentClass = (Class<T>) typeArguments[0];
    this.idClass = (Class<ID>) typeArguments[1];
  }
}

class DeviceDAO<T extends Device> extends GenericDAO<T, Long> {}
class RouterDAO extends DeviceDAO<Router> {}

答案 2 :(得分:0)

如果您正在使用Ext 4+并使用Ext.application语法创建应用程序,那么将在全局命名空间中引用您的应用程序:

Ext.application({
    name: 'DrEvil',
    launch: function() {
        // do some stuff
    }
});

http://docs.extjs.com/extjs/4.1.3/#!/api/Ext.app.Application

此时,应在全局范围内定义DrEvil。现在,您应该能够通过DrEvil.getApplication().name将应用程序名称引用为字符串,尽管这可能对您要执行的操作有点多余。

希望这有帮助。