2012-03-27 2 views
2

Я знаю, что этот вопрос уже был отправлен в StackOverflow, но я либо не понял, либо sencha несколько изменился.Sencha Touch 2 Глобальные переменные - Доступ повсюду

Мое приложение загружает панель формы для входа в систему, поэтому я хотел бы сохранить информацию о пользователе, которая только что вошла в систему. Таким образом, я могу изменить свой просмотр в любое время, когда захочу, и все еще знаю имя зарегистрированного пользователя.

Вот мой основной код:

//<debug> 
Ext.Loader.setPath({ 
    'Ext': 'sdk/src' 
}); 

//</debug> 
Ext.application({ 
    name: 'APP', 

    loadedUser: 'the test', 

    requires: ['Ext.MessageBox'], 

    views: ['Main', 'Home', 'Login'], 

    models: ['User'], 

    stores: ['Users'], 

    controllers: ['Main'], 

    icon: { 
     57: 'resources/icons/Icon.png', 
     72: 'resources/icons/Icon~ipad.png', 
     114: 'resources/icons/[email protected]', 
     144: 'resources/icons/[email protected]' 
    }, 

    phoneStartupScreen: 'resources/loading/Homescreen.jpg', 
    tabletStartupScreen: 'resources/loading/Homescreen~ipad.jpg', 

    setLoadedUser: function(arg) { 
     this.loadedUser = arg; 
    }, 

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

     // Initialize the main view 
     Ext.Viewport.add(Ext.create('APP.view.Main')); 
    }, 

    onUpdated: function() { 
     Ext.Msg.confirm("Application Update", "This application has just successfully been updated to the latest version. Reload now?", function() { 
      window.location.reload(); 
     }); 
    } 
}); 

«loadedUser» его, что я хотел, чтобы моя глобальная переменная, и метод setLoadedUser (Arg) его suposed, чтобы изменить это значение.

Я могу получить доступ к 'loadedUser' без проблем, но я не могу изменить его значение. Другой вопрос: loadedUser может быть структурой массива/данных?

+1

Как вы обращаетесь к функции? Это работает для меня. Помните, что вы должны получить к нему доступ, например: 'APP.app.setLoadedUser ('test');'. И да, это может быть любая ценность. :) – rdougan

+0

Вот и все. Отправить в ответ, так что сделайте это своим :) Спасибо за пропуст – Ricardo

ответ

4

Как вы обращаетесь к функции? Это работает для меня. Помните, что вы должны получить к нему доступ следующим образом:

APP.app.setLoadedUser('test'); 

И да, это может быть любая ценность. :)

+0

Я не могу получить доступ к этому в своих магазинах и контроллерах .. почему это так? – kush

0

Да, работает, когда функция находится внутри файла app.js. Это не работает, если функция находится внутри файла контроллера.

Так что если у вас есть приложение проекта под названием IronMan, вызов из кода представления в глобальной функции, flyAway(), в файле app.js будет выглядеть:

IronMan.app.flyAway(); 
+0

ironman fan haha;) – kush

+0

Я честно не получаю этот ответ. Как показано выше, моя app.js содержит функцию, которую я хочу использовать как глобальную на уровне корня 'Ext.application' в файле app.js. Я что-то упустил? – vaitrafra

+0

Я просто попытался вызвать 'launch()' из области, где мне нужно вызвать 'getLoggedUserDetails()', и он работает. Я действительно не получаю WTF в своих пользовательских функциях, он не распознается. – vaitrafra

1

Вы можете также использовать LocalStorage к, установите/получить переменные:
Установить это как: localStorage.setItem('currentUserId', userID)
получить как: localStorage.getItem('currentUserId')
Вы можете использовать его в любом месте вашего сценария.