Невозможно использовать getApplication () в магазине или представлении - PullRequest
6 голосов
/ 16 февраля 2012

Я пишу простое приложение Sencha Touch 2 с новым MVC Pattern of Framework - так что есть модели, хранилища, контроллеры и представления, и все они связаны вместе с приложением.

Теперь есть возможность использовать "this.getApplication ()", чтобы получить экземпляр этого супер-супер-класса "Приложение".

И теперь возникает проблема - getApplication () возвращает только экземпляр приложения, если я нахожусь в контроллере - в виде, модели или магазине, он возвращает «неопределенный».

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

Ладно, но ... было бы очень приятно иметь глобальные свойства, живущие в главном приложении.

Например, я хочу определить мой URL веб-сервиса глобально в Приложении и использовать эту переменную везде, где мне нужно - и, к сожалению, этот URL мне тоже нужен в магазине.

Теперь единственный способ получить доступ к этой глобальной переменной в магазине - это пройти через мое пространство имен. Вместо использования «this.getApplication (). ServiceUrl» я нашел только решение через пространство имен с «NameOfMyApp.app.serviceUrl» - и это не могло быть лучшим способом решения этой проблемы.

Есть идеи по этому поводу? Есть ли лучший, всегда работающий способ получить экземпляр приложения отовсюду? Или, где я должен хранить глобальные переменные, если не в приложении?

Ответы [ 3 ]

3 голосов
/ 17 февраля 2012

Вы можете получить доступ к экземпляру приложения в свойстве AppName.app в последних бета-версиях Sencha Touch 2.

Ext.application({
    name: 'Sencha',

    launch: function() {
        // Logs the application instance
        console.log(Sencha.app);
    }
});
1 голос
/ 16 января 2013

Я работаю с ExtJS 4.1.1a, и Ext.app.Application.instance кажется единственным решением. С контроллера вы можете использовать this.application.

1 голос
/ 03 января 2013

выглядит как Ext.app.Application.appInstance - это решение, не зависящее от имени приложения

...