2015-05-21 3 views
1

У меня есть следующий класс в 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() сделать существует.

Как это возможно?

ответ

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-self и https://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: {} вместо.

+1

или 'this.self.title'. –

+1

@CD .. Мой первоначальный отклик был неправильным, потому что Ext фактически переопределяет свойство 'constructor' объектов (нарушая соглашение JavaScript, что экземпляры имеют свойство, называемое конструктором, которое указывает на сам класс). 'constructor' указывает на функцию, которая Ext вызывает вызов из реального конструктора (который вы можете передать в объекте, являющемся аргументом' Ext.define', или по умолчанию для вас создан). Спасибо, что поддержал мою честность. См. Https://fiddle.sencha.com/#fiddle/na0 –

+0

Тест на скрипку потрясающий! Спасибо за это! Отличный ответ. –

Смежные вопросы