从中访问静态?

时间:2015-05-21 14:43:35

标签: extjs extjs5

我在ExtJS 5.1中有以下课程:

Ext.define('Web.view.guard.apps.conexao.Conexao', {
    extend: 'Web.view.guard.apps.App',

    width: 400,
    height: 600,

    statics: {
        title: 'Conexão',
        icon: 'https://upload.wikimedia.org/wikipedia/commons/a/ac/Approve_icon.svg'
    },
});

我想从控制器或视图本身访问实例上下文中的静态属性,如title = this.statics.title或类似的东西,但我在文档中找不到方法。

我通过Google找到了方法statics()的引用,但它不起作用,this.statics().title返回null,尽管statics()方法确实存在。

怎么可能?

1 个答案:

答案 0 :(得分:3)

简单的方法是

Web.view.guard.apps.conexao.Conexao.title

this.self是对Web.view.guard.apps.conexao.Conexao的引用,因此您可以使用this.self.title。请参阅http://docs.sencha.com/extjs/5.1/5.1.1-apidocs/#!/api/Ext.Base-property-selfhttps://fiddle.sencha.com/#fiddle/na0

Ext.define('Web.view.guard.apps.conexao.Conexao', {
    extend: 'Web.view.guard.apps.App',

    width: 400,
    height: 600,

    statics: {
        title: 'Conexão',
        icon: 'https://upload.wikimedia.org/wikipedia/commons/a/ac/Approve_icon.svg'
    },

    myInstanceMethod: function() {
        console.log(this.self.title); 
    }
});
var conn = new Web.view.guard.apps.conexao.Conexao();
conn.myInstanceMethod();  
// 'Conexão' 
// 'https://upload.wikimedia.org/wikipedia/commons/a/ac/Approve_icon.svg'

如果您希望子类可以访问它,请务必使用inheritableStatics: {}代替。