2016-09-23 2 views
0

Я попытался сделать ExtJS глобального переменный класс, как так:ExtJS глобальных переменные всегда возвращаются исходное значение

Ext.define('ccc.global.GlobalVariables', { 
    singleton: true, 
    username: 'hi user', 
    password: '', 
    clientID: '', 
    token: '' 
}); 

Тогда в контроллере я стараюсь, чтобы изменить переменные так:

ccc.global.GlobalVariables.username = loginData.username; 

Теперь я пытаюсь получить доступ к этим переменным в другом прокси-модели и продолжает возвращать исходное значение 'hi user'.

proxy: { 
    type: 'ajax', 
    extraParams: { 
     'username': ccc.global.GlobalVariables.username 
    }, 

Кто-нибудь видит, что я делаю неправильно?

+2

Сделан вам манящий https: // скрипки. sencha.com/#fiddle/1har, я предполагаю, что ваш прокси-сервер генерируется до того, как вы вызовете изменение в своем контроллере. – pagep

ответ

5

Когда переменная используется в определении прокси-сервера, содержимое переменной устанавливается в прокси-сервер во время определения, а не при создании экземпляра и, особенно, не во время использования. Он не будет обновляться автоматически.

Вот почему, по крайней мере для компонентов, существует свойство bind, в котором явно указывается компонент, который конфигурировать для привязки к внешнему источнику, так что он автоматически обновляется при обновлении источника.

IIRC прокси не поддерживает связываемые подмешать, так что вам придется установить extraParam вручную перед каждой синхронизацией/нагрузок/... работой:

store.getProxy().setExtraParam("username",ccc.global.GlobalVariables.username); 
store.load() 
+0

понимает ... спасибо! – solarissf

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