Sencha Touch 2 глобальные переменные - доступ везде - PullRequest
2 голосов
/ 27 марта 2012

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

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

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

//<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/Icon@2x.png',
        144: 'resources/icons/Icon~ipad@2x.png'
    },

    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();
        });
    }
});

«Загруженный пользователь» - это то, что я хотел, чтобы он был моей глобальной переменной, и метод setLoadedUser (arg) предложил изменить это значение.

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

Ответы [ 3 ]

4 голосов
/ 28 марта 2012

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

APP.app.setLoadedUser('test');

И да, это может быть любое значение. :)

1 голос
/ 27 февраля 2013

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

0 голосов
/ 22 мая 2012

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

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

IronMan.app.flyAway();
...