2014-01-10 4 views
0

Я изучаю Sencha Touch 2, и мне нужна глобальная переменная. Я использовал следующий код, чтобы установить глобальную переменную TID в моем app.js файла:Sencha Touch 2 глобальная переменная undefined

.... 
    launch: function() { 
     // Destroy the #appLoadingIndicator element 
     Ext.fly('appLoadingIndicator').destroy(); 

     // Initialize the main view 
     Ext.Viewport.add(Ext.create('Layouts.view.Main')); 
     TID = 7; 
    }, 
.... 

В представлении списка, я успешно подтверждающего Установить значение по умолчанию в и перезапуске значения с помощью следующего кода:

.... 
itemtap: function(data, index){ 
    var record = data.getStore().getAt(index); 

    var store = Ext.getStore('Sections'); 

    this.fireEvent('ListContent', store.getData().all[index].data.tid); 
    this.TID = store.getData().all[index].data.tid; 
    console.log('Confirming TID: ' + this.TID); 
    console.log('Confirming TID: ' + TID); 
}, 
.... 

console.log код возвращает следующий результат:

Confirming TID: 10 
Confirming TID: 7 

Я пытаюсь использовать это значение TID в магазине, чтобы фильтровать содержимое с удаленного сервера со следующим с ode:

.... 
proxy: { 
    type: 'ajax', 
    url: 'http://myserver/sections/content/'+this.TID, 

    reader: { 
     type: 'json', 
     rootProperty: 'JSON', 
    } 
}, 
.... 

И вот в чем проблема. это.TID или TID оба возвращаются undefined при проверке в сетевом трафике моего браузера.

ответ

0

Параметр url устанавливается, когда сам класс создается, а не при создании экземпляра Store. Поэтому, когда этот файл сначала читается, TID еще не установлен и не будет снова прочитан конфигурацией Section. Что вы, вероятно, придется делать с установкой у вас есть, чтобы использовать

var store = Ext.getStore('Sections'); 
store.getProxy().setUrl('http://myserver/sections/content/' + TID); 
store.load(...); 

к абстрактному из этой функциональности прочь, было бы безопаснее, чтобы добавить метод к вашему Store, который создает правильный URL.

setUrlForTid: function(tid) { 
    this.getProxy().setUrl('http://myserver/sections/content/' + tid); 
} 

В идеале, однако, вы не будете использовать глобальную переменную, чтобы справиться с этим, и вы, вероятно, не придется после такой настройки. Вы должны передавать его с данными, которые вы получаете из списка, аналогично тому, как вы устанавливаете TID сейчас в своем обработчике itemtap.

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